前段时间对gpasswd进行了一些研究,做了一个实验,对su命令做了一个限制:只有我指定的用户能用su命令,其他用户即使知道root密码也不能su到root。主要就是将指定用户添加到su命令的属组中,查看/bin/su发现su的默认属组是root,我用gpasswd -a user root将一些用户添加到root数组中,然后修改权限,chmod 750 /bin/su。重启终端后,你用root用户可以su到普通用户,可是非root属组的普通用户却不能su到root用户。
但是最后我想让普通用户su到root,发现却不好使了,即使chmod 755 /bin/su,即使root密码对了也不行,苦思很久,终于找到原因:查看另一台机器下的/bin/su文件的权限,你会发现是 -rwsr-xr-x, 而现在是-rwxr-xr-x,问题症结就在这个s权限,s权限是一个特殊权限,让你临时可以拥有root权限,即使用者可以临时具备该文件属主/属组的执行权限。
原因找到了,root 下chmod u+s /bin/su, 问题得以解决。其实linux下好多命令的权限都是这种方式,让你可以临时拥有root权限执行命令。