应通过pam配置限制su命令:在/etc/pam.d/su中添加auth required pam_wheel.so use_uid,仅wheel组成员可使用su;创建并加入wheel组,再配合visudo启用%wheel all=(all) all实现sudo精细化权限控制,并锁定root密码(passwd -l root)以彻底禁用su登录。

限制su命令的使用
默认情况下,任何用户只要知道root密码就能通过su -切换到root账户,存在较大安全风险。最直接有效的限制方式是禁止普通用户执行su命令:
- 修改/etc/pam.d/su文件,在开头添加一行:
auth required pam_wheel.so use_uid - 该配置表示:只有wheel组成员才能使用su切换到其他用户(包括root)
- 若希望仅允许wheel用户su到root(而非任意用户),可改用:
auth required pam_wheel.so use_uid group=wheel - 注意:此配置不会影响sudo,仅约束su行为
配置wheel管理组并添加用户
wheel组是Linux中传统用于授予特权操作权限的系统组。启用后,只有加入该组的用户才被允许执行敏感操作(如su或特定sudo命令):
- 确认wheel组是否存在:
getent group wheel(若无输出,可用groupadd wheel创建) - 将指定用户加入wheel组:
usermod -aG wheel username - 验证是否生效:
groups username 应显示包含wheel - 新用户需重新登录或启动新shell,组权限才会生效
配合sudo实现更精细的权限控制
单纯依赖su + wheel较粗粒度,推荐结合sudo提升安全性与可审计性:
- 编辑sudoers文件:
visudo(强制语法检查,避免锁死系统) - 取消注释这行(RHEL/CentOS/Fedora默认已启用):
%wheel ALL=(ALL) ALL → 允许wheel组所有用户执行任意命令 - 如需限制为仅特定命令,可写成:
%wheel ALL=(root) /usr/bin/systemctl restart nginx, /bin/journalctl - 保存后,用户改用sudo command而非su,每次操作均有日志记录(/var/log/secure或journalctl)
禁用root密码以彻底阻断su登录
即使配置了pam_wheel,只要root密码仍有效,物理机或console环境下仍可能被暴力破解或误用。建议进一步加固:
- 锁定root账户密码:
sudo passwd -l root(在/etc/shadow中添加!前缀) - 验证结果:
sudo grep '^root:' /etc/shadow 输出第二字段应以!开头 - 此时su -会提示“Authentication failure”,即使wheel用户也无法通过密码su到root
- 特权操作统一走sudo(日志可查、无需共享root密码、支持命令级限制)










