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

wKioL1hQx23D-KFHAAATN4dmbyw977.png-wh_50

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

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

wKioL1hQx3vyY9UAAAAMlW3-uJ4652.png-wh_50

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

wKiom1hQx4Tx4IvMAAAS1uah2Ho737.png-wh_50

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

wKioL1hQx5mRQlVcAAAXMPNd_Ps485.png-wh_50

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

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

wKioL1hQx66gqhtMAAAgtMlK3nI069.png-wh_50

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

wKiom1hQx8eAQHTqAAAtIE3P6E4380.png-wh_50

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

wKiom1hQx-CxNHdSAAD0xqUsfM4114.png-wh_50

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

wKioL1hQx_GQ1aNoAAA_ahbSdzA255.png-wh_50