shell命令以及运行原理
Linux权限的概念
从root用户切换到普通用户可以输入exit或者ctrl+d。
root拥有最高权限:
同时,su 【username】可以在普通用户之间进行切换:
有时需要sudo提升权限
但我们可能在有些时候,只有一条或几条指令需要暂时性使用root权限,也就是我们有临时权限提升的需要,这时我们可以在我们的指令前面加上sudo指令,就可以以root权限执行这条指令,但需要用户的密码和用户的root权限信任
Linux权限管理
01.文件访问者的分类(人)
- 文件和文件目录的所有者:u--User
- 文件和文件目录的所有者所在的组的用户:g--Group
- 其他用户:o--Others
其实,我们以后进公司工作的话,我们都会加入一些项目组。而项目组的其它成员对于你个人来说就是属于other,但同组成员相对于完全陌生的人,理所应当拥有高于普通人的权限,所以为了方便小组之间的沟通合作,linux下对同组用户会专门设置一套权限
例如:有zzy1和zzy2两个用户,它们都可分为zzy组里
默认建立用户时是一个组对应一个用户,组名和用户名相同
02.文件类型和访问权限(事物属性)
a.文件类型
b.基本权限(r、w、x)
03.文件权限值的表示方法
a. 字符表示法
b. 8进制数值表示法
例如,对于文件拥有者的权限 r-x,对应的二进制位101,则用八进制表示成5。
所以3组用户的权限(拥有者、所在组,其他人)可用3位8进制数值表示。
04.文件访问权限的相关设置方法
chmod设置文件的访问权限
使用:chmod 【参数】 【权限】 【文件名】
其中:权限列表:
+表示为用户添加此权限
-表示删除权限
=表示赋予权限
参数列表中:
o表示other
u表示user
g表示group
使用示例:
chown修改文件拥有者
需要root权限
使用示例:chown user file.txt
chgrp修改文件所属组
使用与上面类似
另外,以上所有权限如果对目录使用,仅会修改目录本身的权限,如果想修改文件夹下所有文件的权限,可在参数列表中加入-R递归
05.r,w,x面向目录权限
如果没有r权限,则无法查看文件内内容,但却可以对文件内容进行修改
如果没有w权限,则无法在文件夹内创建和删除文件
如果没有x权限,则无法进入到文件夹中,也无法查看文件的详细信息
06.重要知识补充
粘滞位
上面介绍的目录权限的w权限,如果有此权限,就可以删掉文件夹中的内容
而不管文件夹的所有者是不是你,只要对应用户有文件夹的写权限,就可以任意删除文件夹下的文件
但我却只希望其它用户在这个文件夹上存放它们的数据,(需要w权限),但并不需要其它人删除我们的文件,怎么办?
我们就引入了粘滞位
使用:chmod +t 【文件】
示例:
权限掩码
我们仔细观察可以发现,在不同系统下,我们的文件默认权限是不一样的,那么,产生这种不同的原因是什么呢?
其实,我们在表示权限的时候,可以不光只使用r,w,x等字符来表示
如果我们把有权限记为1,无权限记为0,那么,我们每组的权限可以用一个三位二进制来表示,而每一个3位二进制我们可以转换成一个8进制数字
所以,我们可以使用3位8进制数字来表示某个文件的所有权限
比如,我们要开通所有权限,那么对应二进制就是111 111 111,换算为8进制就是777
所以,我们可以这样:
在linux系统下,文件夹默认权限是666,文件默认权限是777
而在每个系统有不一样的默认值,还受到掩码的影响
掩码:凡是掩码中位为1的,在结果中都会被置为0
公式:权限=mask(默认权限码) & ~umask(掩码)
设置掩码操作:umask 掩码值
注意:掩码的修改仅在本次运行中生效