Linux 权限管理 特殊文件权限SetUID
1、什么是SetUID文件特殊权限
如果某一个可执行的二进制文件拥有SetUID权限,则表示任何其他的普通用户在执行这条命令的时候都会暂时性拥有root的身份权限
我们举一个例子来说明:
我们知道passwd命令可以修改用户的密码,但是我们知道passwd命令终究是要修改shadow中的文件来生效的,可是我们通过查看shadow文件的权限确又发现他对任何普通用户都是没有权限的,那么普通用户是如何进行修改密码的操作的呢?
如果你仔细观察passwd的所属组的权限,会发现他与众不同,因为他是 rws,这其中的s就代表中这个可执行文件(命令)具有SetUID特殊权限,也就是任何其他具有对passwd命令执行的权限的普通用户在执行这条命令的时候,都会暂时性的拥有root的身份权限,所以这就能够解释为什么普通用户能够通过passwd命令来修改shadow文件。
2、设定文件特殊权限SetUID的前提条件
1、只有可执行的二进制文件设定SetUID才有意义
2、这个二进制文件需要对外的外用拥有x可执行权限,原因也很简单,SetUID是在用户调用这条命令的时候生效的,如果你连这条命令的执行权限都没有,那么何来SetUID特殊权限
3、SetUID只在其它对这条命令具有可执行权限的用户执行这条命令的时候临时生效
3、设定SetUID权限
以下命令表示为aaa可执行文件的所有者设定SetUID特殊文件权限
chmod 4755 aaa
以下命令表示为aaa可执行文件的所属组设定SetUID特殊文件权限
chmod 2755 aaa
4、取消SetUID权限
chmod 755 aaa
5、危险的SetUID权限
SetUID权限是很危险的,我们需要为Linux系统的中的拥有SetUID权限的文件做一个文件列表,并可以使用shell脚本定期搜索系统中的SetUID权限文件,防止出现一些悲剧性的事情。原因其实也很好理解,SetUID能让普通用户暂时性的拥有root用户的权限的
我们可以简单举个栗子,来说明一下SetUID的危险性
vim命令在正常情况下是没有SetUID权限的,也就是说普通用户不能使用vim命令去修改类似shadow或passwd文件的权限,可是如果一旦root用户一不小心为vim命令加上了SetUID命令,那就说明普通用户在执行vim命令的时候会暂时性的具有超级用户root的权限,也就是说,这个普通用户就可以修稿passwd和shadow文件,他只要将passwd中将自己账户的UID字段改为0,就可以将自己变为管理员root,想想看这是一间多么恐怖的事情。
所以,一定要对SetUID特殊文件权限多加小心!