r1 - 10 Sep 2008 - 08:08:43 - Main.yfangYou are here: YWiki >  MyTech Web > 如何禁止部分用户使用su

如何禁止部分用户使用su

说明

  • 环境 CentOS4
  • 时间 2008.9.10
  • 目标 禁止除yfang1,yfang2两个管理员帐号以外的其他账号使用su

尝试解决的过程

  • 本来认为这是一个非常容易的过程,初步设想将yfang1和yfang2加到一个admin组中,然后限制其他用户的权限来达到目的,结果发现了一个非常有趣的问题,如果你对这个问题不感兴趣,请跳过本节直接看最后的正确做法。
  • 这里先说明一下背景,对于Linux系统比较熟悉的人可以跳过。su 是coreutils中的一个重要程序,用来切换成其他用户。正是由于这种特殊性,他被赋予suid标志,因为只有这样,才能以root身份去读取系统中绝密的用户信息和组信息。所以默认的/bin/su权限如下
root@Server[0]15:43:42# ls -l /bin/su
-rwsr-xr-x  1 root root 61168 Nov 18  2007 /bin/su
  • 我最初的设想,只要把yfang1和yfang2的组改成admin,并且把su命令的组改成admin,最后再去除other的权限就应该可以了,后来的事实证明思路没有问题,不过操作上出现了问题
# 首先我去掉了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,然后就都正常了

正解

  • help 以下是正确的操作步骤,注意第一步和第二步顺序不能反
# 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

总结

  • 经过后面多次的实验,证实,所有的suid程序,在执行chown或是chgrp进行用户或者组的修改时,suid标志会自动消失
  • 特别强调一下,suid标志消失仅仅而且必然发生在chown或者chgrp更改了原来的用户或组信息。比如原来组是root,这时执行chgrp root /bin/su 就不会去掉suid标志
  • sgid标志经过实验没有发现类似自动消失的问题
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r1 | More topic actions
 
Powered by YWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding YWiki? Send feedback