
各位读者大佬好,我是落羽!一个坚持不断学习进步的学生。 如果您觉得我的文章还不错,欢迎多多互三分享交流,一起学习进步! 也欢迎关注我的blog主页: 落羽的落羽
Linux的权限,本质是为了更好地进行用户管理!
Linux系统下,可以存在不同用户,分为普通用户和超级用户(root),普通用户可以用adduser 用户名指令进行创建,使用passwd 用户名为其账号设置密码,用userdel 选项 用户 指令删除用户。
切换用户的命令是su 用户名,root可以随便切换,普通用户切换账号需要对方账号密码。普通用户切换到root的命令是su root(root可以省略),需要root的密码。这种切换用户时,所处的目录不变。写成su - 用户名,是以重新登录系统的形式进行切换。
有些命令只能由root执行,普通用户想要执行,需要在命令前加sudo,表示以超级用户身份运行指令。sudo就是普通账号进行短暂提权的指令。
ls -al指令,能查看一个文件的详细类型和属性,举个例子:


一个文件的访问者身份,可以分为三类:
注意区别Linux系统的用户和文件访问者的概念,用户是一个具体的人,文件访问者相当于“角色身份”的概念。 想象文件是一家公司,只有“员工”身份能够进入公司。用户张三、李四是员工角色,它们就有访问公司的权限;王五不是员工角色,没有访问公司的权限。
每个文件都有它的属性,用一串字符表示:

上述文件的属性为drwxrwxr-x,就划分为d rwx rwx r-x,即:这个文件是文件夹类型(d)、u用户对它可读可写可执行(rwx)、g用户对他可读可写可执行(rwx)、o用户对它可读不可写可执行(r-x)。
再来个例子。一个文件的属性是-rw-rw-r--,表示它是一个普通文件,u用户可读可写不可执行,g用户可读可写不可执行,o用户可读不可写不可执行。
除了用字母表示权限,还有一种8进制数值表示法:文件权限分为三类用户,每类用户有三种权限,正好可以用一个八进制位(0-7)来表示。r是4,w是2,x是1,没有对应权限则是0,相加得到该类用户的权限值。比如rwxrwxr-x可以表示为775,rw-rw-r–可以表示为664。
root不受文件的权限约束,相当于拥有所有权限;普通用户才受文件中其对应身份的权限约束!
用户访问文件时,系统要确认用户相对于文件的身份角色,这个过程中权限只会验证一次。比如一个用户既是u也是g,身份从左到右匹配时匹配了u就会结束,用户只能有u的权限,没有g的权限。
一个文件的用户权限,当然也可以进行修改。
chmod命令,功能是设置文件的访问权限,语法是chmod 选项 权限 文件名,常用选项是R,表示递归修改目录及其下文件。要注意的是,只有文件的拥有者或root才能修改文件的权限。
chmod命令权限值的格式是:
例子:

一个文件的所有者、所属组也需要能够修改,只有root才能修改文件的拥有者和所属组!普通用户想要修改需要切换root账号或sudo。
chown命令用于修改文件的拥有者,格式是chown 参数 用户名 文件名(修改文件拥有者)、也可以chown 选项 用户名:所属组名 文件名(同时修改拥有者和所属组)。常用选项是R,表示递归修改。
chgrp命令用于修改文件的所属组,格式是chgrp 选项 用户组名 文件名。常用选项是R,表示递归修改。

一个文件在创建时,一定会有一个初始的权限值,这个初始的权限值也是可以进行控制的,通过权限掩码进行控制。
umask指令,用于查看或修改权限掩码。一般情况下,超级用户默认掩码值为0022,普通用户默认为0002。

这就是说,默认情况下,超级用户新建一个目录初始权限值为755(0777 - 0022),新建一个普通文件初始权限值为644(0666 - 0022);普通用户新建一个目录初始权限值为775(0777 - 0002),新建一个普通文件初始权限值为664(0666 - 0002)。

有了权限掩码这个概念,我们就可以用umask 权限掩码值设置自己想要的权限掩码值,控制新建文件的初始权限了。但是,这样设置的权限掩码是临时更改的,重新登录系统还会恢复默认值。

刚才关于目录的权限问题,我们提到过:要删除文件,需要对文件所在目录有w权限,而不一定需要文件本身的w权限。 但是实际中不太科学啊,一个用户没有一个文件的w权限,但是有其所在目录的w权限,虽然无法修改该文件内容,但是可以直接删掉?为了解决这个问题,Linux又引入了粘滞位的概念。
命令chmod +t 目录名可以为一个目录设置粘滞位,然后这个目录下的文件只能由超级用户、该目录的所有者、文件的所有者删除。其他人无法删除。

粘滞位通常用在文件多人共享的场景。
本篇完,感谢阅读!