文件的特殊权限:SUID、SGID、STicky及文件扩展权限ACL
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
其实文件和目录的权限设置不止这些,还有所谓的特殊权限。特殊权限会拥有一些“特权”,如umask掩码的3位,实际上是4位,umask掩码的第1位表示特殊权限SUID、SGID、STicky。
SUID、SGID和STicky对应的八进制数值如图所示:
SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用“ls -l”或者“ll”命令查看文件时,如果可执行文件所有者权限的第三位是一个小写的“s”,就表明该执行文件拥有SUID属性,如/usr/bin/passwd文件,如图:
注意:赋予SUID权限后,该权限需占用所属主的x权限位,如果文件本身的所属主权限具有x权限,那么将会显示为s ,如果没有x权限,则显示为S。
赋值SUID权限。
查看设置SUID权限后的效果
互动:普通用户mk没有对shadow文件的写权限,但是mk用户使用passwd修改自己的密码时,可以修改shadow文件中的内容,这是什么原因?
因为mk用户执行passwd命令时,权限会提升成root用户,所以可以修改成功。
限定:既可以给二进制可执行程序设置,也可以给目录设置。
功能:在设置了SGID权限的目录下创建文件时,新创建的文件的所属组会继承上级目录的权限。
注意:赋予SGID权限后,该权限需占用所属组的x权限位,如果文件本身的所属组权限具有x权限时,将会显示为s,如果没有x权限,则显示为S。
测试设置SGID大权限后的效果。
限定:只作用于目录。
功能:在一个公共目录中,每个用户都可以创建文件,但只能删除自己的文件,不能删除其他用户的文件。
注意:赋予STicky权限后,该权限需占用其他用户的x权限位,如果目录本身的其他用户权限具有x权限,将会显示为t,如果没有x权限,则显示为T。
系统中的tmp目录本身就具有STicky权限。
文件扩展权限(ACL)的全称为Access Control List。
设置ACL权限的相关命令:setfacl命令和getfacl命令。
setfacl命令:用于设置ACL权限。
命令使用格式:setfacl -m u:用户名:权限 文件名。
注意:用setfacl设定权限时,没有相关修改权限的参数,也就是说,权限设定后不支持修改或调整,但可以通过重新指定权限进行调整,例如,指定了rwx权限时,想要去掉x权限,重新赋予rw权限即可。
setfacl命令的选项如下:
设置用户mk对文件a.txt拥有的rwx权限,mk不属于a.txt的所属主和所属组,mk是其他用户。
给目录设置ACL权限
测试一下d参数
给目录下所有文件都加扩展权限。