要让wheel组真正起到“su到root的白名单”作用,必须同时配置pam认证、组权限和锁定root账户:创建wheel组并添加用户、启用pam_wheel.so校验、执行sudo passwd -l root锁定root密码,并通过sudo visudo授权wheel组使用sudo提权。

要让 wheel 组真正起到“su 到 root 的白名单”作用,核心不是只加用户进组,而是把 PAM 认证、组权限、root 账户状态三者配齐。缺一不可。
确认并创建 wheel 组
多数 RHEL/CentOS/Fedora 系统已内置 wheel 组;Ubuntu/Debian 默认不启用,需手动创建:
- 检查是否存在:
getent group wheel—— 无输出就执行sudo groupadd wheel - 把授权用户加入:
sudo usermod -aG wheel username - 新组权限需重新登录 shell 才生效,可用
groups命令验证
启用 PAM 的 wheel 白名单校验
编辑 /etc/pam.d/su,在 auth 段顶部附近(建议放在 pam_rootok.so 之后、pam_unix.so 之前)添加或取消注释这一行:
-
auth required pam_wheel.so use_uid:允许 wheel 成员 su 到任意用户(包括 root) - 如只允许 su 到 root,改用:
auth required pam_wheel.so group=wheel - 若希望非 wheel 用户连密码提示都不显示,可加
deny选项:pam_wheel.so group=wheel deny
加固 root 账户防止绕过
即使配置了 pam_wheel,只要 root 密码有效,本地终端仍可能被暴力尝试。必须锁定 root 密码:
- 执行:
sudo passwd -l root - 验证:
sudo grep '^root:' /etc/shadow—— 第二字段应以!开头 - 此时
su -对所有用户均返回 Authentication failure,彻底阻断密码路径
配合 sudo 实现更可控的提权方式
限制 su 不等于放弃提权能力,而是转向可审计、可限权的方式:
- 用
sudo visudo编辑/etc/sudoers,取消注释:%wheel ALL=(ALL) ALL - 用户改用
sudo command,每次调用自动记入/var/log/auth.log或 journal 日志 - 如需精细化控制,可限定命令范围,例如:
%wheel ALL=(root) /usr/bin/systemctl restart nginx











