除了基本权限外,还有三个一般用于二进制程序或者目录的的权限,分别是SetUID、SetGID和Sticky Bit。
SetUID:
如图,s权限,一般出现在二进制程序的所有者(user)所属权限的x权限位置上,它代表着如果用户对该程序拥有x权限,那么在该程序运行过程中,用户将具有该程序所有者(user)的权限。例如,/etc/shadow/文件保存着所有账户的密码信息,它的权限是-r--------,所有者是root,普通用户没有修改的权限。但是,普通用户拥有/usr/bin/passwd的x权限,所以在普通用户通过passwd命令调用/usr/bin/passwd的过程中,就暂时拥有了该程序的所有者也就是root的权限,也就可以更改自己的密码了。
SetGID:
如图,s权限出现在用户组的权限位置。针对文件时与SetUID类似,用户对该文件拥有x权限的话,那么在该程序运行过程中,用户就将拥有该程序用户组的权限。而针对目录时则不同,这时若用户具有该目录的x权限,那么用户在该目录下的有效用户组就会变成该目录的用户组,所以,如果用户拥有该目录的w权限的话,在该目录下创建的文件或目录所属的用户组与该目录相同。
Sticky Bit:
如图,t权限出现在其他人的权限位置上,同时Sticky Bit仅针对目录。它的作用是,在拥有该权限的目录下创建的文件或目录,只有用户自己或者root才能删除。
另外,还存在一种特殊情况,如图:
SetUID、SetGID、Sticky Bit都变成了大写,这是因为文件所有者本身都没有x权限,所以这些大写的S、T就代表该权限无效。
至于这三种权限的设置方法,与普通权限类似,已在最后两张图上示意。