suid特殊权限,作用于二进制可执行文件,让普通用户(其他人,有执行权限)执行这个文件的时候,临时拥有该文件属主的权限。拥有suid特殊权限的二进制可执行文件显示为红色,属主权限执行位上显示的不是x,而是s。如/usr/bin/passwd命令。

suid 特殊权限_特殊权限

可以看到,/usr/bin/passwd这个命令的属主是root,只因为该命令对其他人有执行权限,且拥有suid特殊权限,所以普通用户可以修改自己的密码,只需提供自己的旧密码就可以。

再来看一个命令:/bin/ls,普通二进制可执行文件显示绿色。

suid 特殊权限_特殊权限_02

可以看到,/bin/ls这个命令的属主也是root,对其他人也有执行权限,但是没有suid特殊权限,所以普通用户执行这个命令的时候不能临时拥有root用户的权限,可以测试下,普通用户是不能访问/root目录的。

suid 特殊权限_suid_03

我们可以给ls加上suid特殊权限,再来访问/root看看结果。

suid 特殊权限_suid_04

可以看到,现在普通用户可以ls /root了。

前面说了,必须是二进制可执行文件,其他人有执行权限,施加suid才有效,如果其他人没有执行权限,即使属主有suid特殊权限也没用。

suid 特殊权限_特殊权限_05

如果属主没有执行权限,有suid特殊权限的命令的属主执行权限那里显示的是大写的S,由于这里属主是root,所以即便没有x权限照样能执行,普通用户也能执行。

suid 特殊权限_特殊权限_06

如果属主不是root用户,属主和其他人都能执行;

suid 特殊权限_特殊权限_07

去掉属主的x权限,属主自己不能执行,但是其他用户依然能够执行

suid 特殊权限_特殊权限_08