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
验证与自查
- 普通用户执行
su - root被拒绝(提示密码错误或权限不足) - 普通用户执行
sudo su -被拒绝(sudoers 规则生效) - 普通用户执行
sudo -i仍可用(未被限制) - wheel 组内用户执行
su - root可以正常切换