1. SUID/SGID
SUID(Set User ID)意味着如果某个用户对属于自己的文件设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。那么如果root用户的某一个脚本/可执行程序设置了这样的权限,其他普通用户在执行它的期间也同样具有root用户的权限。同样的原则也适用于SGID,执行相应脚本的用户将具有该文件所属用户组中用户的权限。
SUID特殊权限只适用于可执行文件。当用户执行此类型文件时,操作系统会暂时将当前用户的UID切换为文件所有者的UID。当文件执行结束后,身份的切换随之结束。
举个例子,用户想修改自己的密码,可以使用passwd 用户名
,passwd可执行文件位于/usr/bin/
下。我们知道,用户的密码信息保存在/etc/shadow
文件中,那么passwd
的原理其实就是修改shadow文件。
可以看到,该文件为root用户所有,并设置了仅root用户有 w(写)权限。那么,其他普通用户按理说是修改不了该文件,为什么普通用户可以使用passwd命令直接修改shadow文件?我们再看下面的passwd命令,执行权限x
变成了s
,这是因为设置了SUID权限,其他用户调用执行passwd时,操作系统会使用该文件所有者的的身份(root)去执行,故而可以修改shadow文件。如果取消passwd的SUID权限,你可尝试一下,普通用户修改密码会失败。
chmod u+s filename -->>设置SUID权限
chmod u+s filename -->>取消SUID权限
2. 查找SUID文件
以下命令皆可查找配置了SUID特殊权限的文件
find / -perm -4000 -type f -exec