linux中可通过pam的pam_wheel模块启用wheel组白名单机制限制su提权:需在/etc/pam.d/su中启用auth required pam_wheel.so use_uid,将用户加入wheel组,并建议统一配置su与su -的校验,同时锁定root密码以增强安全。

在Linux中,通过PAM的pam_wheel模块可以精确控制哪些用户能使用su切换到root账户,核心是启用wheel组白名单机制。
确认系统使用pam_wheel并启用wheel组校验
大多数主流发行版(如RHEL/CentOS、Fedora、Arch)默认已安装pam_wheel,但需检查/etc/pam.d/su是否启用该模块:
- 打开
/etc/pam.d/su,查找含pam_wheel.so的行,常见配置为:auth required pam_wheel.so use_uid - 若该行被注释(以
#开头),请取消注释;若不存在,可手动添加上述行(放在其他auth规则之前更稳妥) -
use_uid表示以调用者实际UID(而非euid)判断是否属于wheel组,更安全
将授权用户加入wheel组
只有wheel组成员才能通过su -提权至root。添加方式如下:
- 执行命令:
sudo usermod -aG wheel username(替换username为实际用户名) - 验证是否生效:
groups username应显示包含wheel;或以该用户登录后运行id -nG - 注意:普通用户需重新登录(或新建shell)才能继承新组权限
区分su与su -(登录shell)的行为差异
pam_wheel默认仅对su -(即带-或--login参数)强制校验;而su(不带参数)可能绕过限制——这是常见疏漏点:
- 为统一管控,建议在
/etc/pam.d/su中同时配置两行:auth required pam_wheel.so use_uidauth [success=ok default=bad] pam_wheel.so use_uid group=wheel - 或更严格地,在
/etc/pam.d/su顶部添加:auth requisite pam_wheel.so deny group=wheel(先拒绝非wheel用户),再加auth required pam_wheel.so use_uid(允许wheel用户) - 测试时务必用
su -验证,避免误判
可选:禁用root密码直接登录增强纵深防御
即使限制了su,仍建议关闭root密码认证,防止其他途径提权:
- 运行
sudo passwd -l root锁定root密码(不影响su或sudo) - 检查
/etc/shadow中root行是否以!或!!开头 - 此操作不影响wheel用户通过
su -提权,仅阻止直接su root或SSH登录root











