Set UID(SUID)
什么是SUID?
当s这个标志出现在文件所有者owner的权限x上时,例如/usr/bin/passwd的权限状态是”-rwsr-xr-x”,这样的形式就被称为SetUID。
SUID的有什么样的限制和功能呢?
我们首先将SUID拥有的限制和功能列出来,然后再通过一个具体的例子进行解释:
- 首先,SUID仅对二进制程序有效;
- 执行者要对该程序具有x权限;
- 这个权限是在程序的执行过程中发挥作用的;
- 执行者将暂时拥有程序owner的权限。
接下来我们通过一个具体的例子来加深对上面的限制和概念的理解。在Linux系统中,所有的帐号密码都记录在/etc/shadow文件中,这个文件的权限是”r- - - - - - - - 1 root root”(其中1表示i node节点的数目),意思就是只有root可对读这个文件而且可以对这个文件进行强制写入。但是普通用户也是可以通过passwd命令修改自己的密码的。你可能会觉得奇怪,明明其他用户是没有权限访问/etc/shadow这个文件的,为什么密码可以被修改呢?这就是SUID的功能啦。例如,我的当前用户是flyonthemap(在地图上飞行),对应上面的功能和限制的解释则有:
- usr/bin/passwd的权限状态是“-rwsr-xr-x”,因此flyonthemap对有x的权限,也就是说可以执行passwd命令。
- passwd的拥有者