Linux中文件除了r、w、x这三个读、写、执行的权限还有特殊权限(s、t)。
SUID权限:
当s这个标志出现在文件所有者的x权限上时(如:"-rwsr-xr-x"),则被称为Set UID,简称SUID权限。
SUID限制:
1、SUID权限仅对二进制程序(可执行程序)有效。
2、执行者对于该程序需要具有x的可执行权限。
3、本权限仅在执行该程序的过程中有效。
SUID作用:
执行者满足上述限制后将具有该程序所有者的权限。
举例说明:
用户的密码都存于/etc/shadow文件中,而如图显示只有root能对其修改,那为什么普通用户也能进行修改。
如图所示,因为passwd有SUID权限,所以passwd执行时执行者获得了程序所有者的root权限,从而解释了上述问题。
SGID权限:
当s这个标志出现在用户组的x权限上时(如:"-rwxr-sr-x"),则被称为Set GID,简称SGID权限。
SGID与SUID不同,它既针对文件有效也针对目录有效。
对文件的作用:
SGID限制:
1、SGID权限对二进制程序(可执行程序)有用。
2、执行者对于该程序需要具有x的可执行权限。
3、本权限仅在执行该程序的过程中有效。
SGID作用:
执行者满足上述限制后将具有该程序用户组的支持。
举例:
对于/var/lib/mlocate/mlocate.db文件etherlai用户是无法访问,但当运行locate的时候就能够读取。
对目录的作用:
用户在某个目录下新建的文件对应的用户组都会与该目录的用户组名相同。
SBIT权限:
当t这个标志出现在文件其他人的x权限上时(如:"-rwxr-xr-t"),则被称为Sticky Bit,简称SBIT权限。
SBIT限制:
1、SBIT权限仅对目录有效。
2、用户对此目录具有w,x权限(即:具有写入的权限)。
SBIT作用:
当用户在该目录下创建文件或目录时,仅有自己与root有权力删除该文件。
举例:
虽然chmod 777 testing,但是因为testing文件是root在/tmp目录下创的,/tmp具有SBIT权限,所以etherlai仍无法删除testing。
有时并不是上面的s、t出现,而是出现大写的S、T,原因是缺少对应出的x权限,这个S、T代表的就是“空的”,
以SUID为例,虽然该文件在执行时有文件所有者的权限,但是文件所有者没有x权限无法执行了,哪来的权限给其他人使用,当然就是空的啦!