linux下禁止普通用户通过 sudo su 或 su root 切换到root用户

本文适合需要对服务器做提权管控的运维人员。你会学到:为什么只加 wheel 组限制不够,以及如何用两步配置同时封死 sudo su -su - root 两条提权路径。

网上搜出来的很多方法,都是说加那个什么 wheel 组的就行,不加的就不行。但那样仅仅只能禁止 su - root 切换,并不能禁止通过 sudo su -进行切换。

步骤一:限制 su 提权(PAM 与 login.defs)

修改 /etc/pam.d/su 配置:

打开这个配置文件,找到如下行,并将行首 “#” 去掉,保存文件

auth required pam_wheel.so use_uid

修改 /etc/login.defs 文件:

vi /etc/login.defs 
#在文件末尾添加  SU_WHEEL_ONLY yes  保存文件

步骤二:限制 sudo 调用 su(sudoers)

vim /etc/sudoers 添加:

## Allow root to run any commands anywhere 

mccok  ALL=(ALL)       ALL,!/bin/su

两个步骤做完,则可以实现标题所说目的。

两种做法的效果对比

  • 如果只做了第一步,则还是可以通过 sudo su -sudo su 切换到 root
  • 如果只做了第二步,则还是可以通过 su - root 切换到 root

放行指定用户

如果想要只允许某用户可以使用 su 切换到 root 上。

则将该用户添加到 wheel 组即可

usermod -g wheel mccok

验证与自查

  1. 普通用户执行 su - root 被拒绝(提示密码错误或权限不足)
  2. 普通用户执行 sudo su - 被拒绝(sudoers 规则生效)
  3. 普通用户执行 sudo -i 仍可用(未被限制)
  4. wheel 组内用户执行 su - root 可以正常切换

参考