环境 CentOS4
时间 2008.9.10
目标 禁止除yfang1,yfang2两个管理员帐号以外的其他账号使用su
root@Server[0]15:43:42# ls -l /bin/su -rwsr-xr-x 1 root root 61168 Nov 18 2007 /bin/su
# 首先我去掉了other的权限 root@Server[0]15:46:50# chmod o-rx /bin/su root@Server[0]15:46:51# ls- l /bin/su -rwsr-x--- 1 root root 61168 Nov 18 2007 /bin/su # 然后我添加了admin组,并把yfang1和yfang2加入其中 root@Server[0]15:46:53# groupadd admin root@Server[0]15:46:54# usermod -aG admin yfang1 root@Server[0]15:46:55# usermod -aG admin yfang1 # 再后面我执行chgrp admin /bin/su 之后,就认为应该没有问题了,注意这一步 <<<< 我后面会强调这句话的问题 # 当然,我用一个普通用户执行su -,结果返回 -bash: /bin/su: Permission denied,这正是我们期望和预想的 # 然而,当我以yfang1 身份执行su -,提示输入密码,输入正确的密码后报错 "su: incorrect password",怎么试都不行 # 我尝试把组改回root,chgrp root /bin/su,再做刚才的操作依然报同样的错误,汗! # 最后检查了好久才发现,在执行chgrp的时候,本来su上面的suid标志也跟着去掉了,所以自然没有权限去读密码信息,所以就失败了 # 解决的方法自然是执行chgrp之后重新为su添加上suid标记,chmod 4750 /bin/su,然后就都正常了
# 1. 将su的组从原来的root改成admin,注意,这一步会影响到/bin/su上本来的suid标记 chgrp admin /bin/su # 2. 这一步有两个作用,第一,恢复su的suid标记,第二,禁止普通用户访问su chmod 4750 /bin/su # 3. 将yfang1和yfang2 加入到admin组中,这一步顺序无所谓 usermod -aG admin yfang1 usermod -aG admin yfang2