除了rwx权限外,Linux中还有另外三种特殊权限:SUID,SGID,SBIT。
ls -l /usr/bin/passwd ;ls -ld /tmp
SUID
s出现在文件所有者的x权限上,此时称为Set UID,简称为SUID的特殊权限。
- SUID只能用于二进制可执行文件,对目录无效;
- 执行者若具有该文件的x权限,则将具有文件所有者的权限;
- 权限只在文件执行时有效,执行完毕不再拥有所有者权限。
注意:
SUID仅可以用于二进制文件,不能用在shell script上,也不能用在目录上。
SGID
s出现在文件所属群组的x权限上,此时称为Set GID,简称为SGID的特殊权限。SGID既可以作用于文件,也可以作用于目录。
对于文件来说:
- SGID对二进制程序有用;
- 程序执行者对于程序具有x权限,则程序执行的过程中程序执行者将获得该程序的用户组支持。
对于目录来说:
- 用户若对于目录具有r+x权限,该用户可以进入这个目录;
- 用户在此目录下的有效群组将编程该目录的用户组;
- 若用户在此目录下具有w权限,则用户新建的文件的用户组将与此目录的用户组相同。
SBIT
SBIT指的是Sticky Bit,目前只对目录有效,t出现在文件其他用户的x权限上。
当用户对于此目录具有w+x权限,即写入权限时:
当用户在该目录下创建文件或者目录时,仅有该用户和root才有权限删除文件或者目录。
修改SUID,SGID,SBIT权限
符号类型修改权限
chmod u+s test #为test文件加上suid权限
chmod g+s test #为test文件加上sgid权限
chmod o+t test #为test文件加上sbit权限
数字类型修改权限
我们知道普通文件的rwx权限修改,对于特殊权限,需要在最前面增加一位,SUID:4,SGID:2,SBIT:1
chmod 4777 test #test拥有SUID权限,rwsrwxrwx
chmod 2777 test #test拥有SGID权限,rwxrwsrwx
chmod 1777 test #test拥有SBIT权限,rwxrwxrwt