在 Linux 系统管理中,su 命令的正确配置是保障服务器安全的核心环节,推荐通过 PAM 模块限制 su 权限、使用 wheel 用户组并启用完整日志审计,必要时应以 sudo 替代传统 su 以降低风险。

su 命令基础与安全风险
su 命令用于切换当前用户身份,最常用场景是以普通用户切换到 root 执行管理操作,但默认 su 配置存在明显安全缺陷:任何知道 root 密码的用户都能直接切换,导致权限滥用、攻击面扩大,尤其在多用户或云服务器环境中风险极高,su 切换后的操作难以追溯,一旦发生安全事件,无法定位责任人。
核心风险包括: root 密码泄露即全盘失守、无操作日志导致审计缺失、无法进行细粒度权限分配,必须通过配置对 su 进行严格管控。
核心配置方法:PAM 与用户组
限制 su 权限:仅允许 wheel 组使用
将 /etc/pam.d/su 文件中的 auth required pam_wheel.so use_uid 行取消注释(或添加),即可实现仅 wheel 组成员能通过 su 切换到 root,操作步骤:
- 编辑
/etc/pam.d/su,确保存在auth required pam_wheel.so use_uid。 - 使用
usermod -aG wheel 用户名将可信用户加入 wheel 组。 - 测试:非 wheel 组用户执行
su -会提示“密码正确但权限不足”。
此配置将 su 权限从“密码验证”升级为“身份+密码双验证”,极大缩小攻击面。
启用 PAM 日志审计
在 /etc/pam.d/su 中添加 auth optional pam_tally2.so 或 account required pam_tally2.so 可记录失败的登入尝试,结合 rsyslog 将 su 操作日志写入 /var/log/secure 或单独文件,便于事后追溯。关键操作建议: 在 /etc/rsyslog.conf 中增加 authpriv. /var/log/su.log,并重启 rsyslog 服务。

替代方案:使用 sudo 实现更精细控制
对于大多数运维场景,建议优先使用 sudo 而非 su。 sudo 允许管理员通过 /etc/sudoers 文件精确指定哪些用户能以哪些身份执行哪些命令,且所有操作记录到日志。
username ALL=(ALL) ALL
但这会授予全部权限;更安全的做法是:
username ALL=(root) /usr/bin/systemctl, /usr/bin/vi
sudo 与 su 的核心区别: su 需要知道目标用户密码,sudo 只需用户自身密码(甚至可免密),且 sudo 的日志详细程度远超 su。当 su 必须使用时,建议配合 sudo 规则实现“禁止直接 su 到 root,但允许通过 sudo 执行特定命令”。
酷番云实践经验:云服务器 su 安全配置
在酷番云云服务器产品中,我们发现大量安全事件源于默认 su 配置未修改,以下是我们与客户合作时推荐的标准化方案:
案例:金融客户审计合规
某金融客户使用酷番云高防服务器,需满足等保二级要求,我们首先在 /etc/pam.d/su 中启用 wheel 组限制,并创建 su-admin 专用组,仅允许 3 名运维人员加入,然后配置 sudo 规则,要求所有 root 操作必须通过 sudo 执行,并启用 sudo 的日志转发至集中日志服务器。结果: 成功通过审计,且半年内未发生权限滥用事件。

具体实施步骤(适用于酷番云 CentOS/Ubuntu 镜像)
- 创建运维组:
groupadd su-admin && usermod -aG su-admin 运维用户 - 修改 PAM 配置: 编辑
/etc/pam.d/su,添加auth required pam_wheel.so group=su-admin - 禁用直接 root 登录: 在
/etc/ssh/sshd_config中设置PermitRootLogin no,强制通过普通用户 + su 或 sudo 进入管理。 - 启用审计: 配置
auditd监控su命令调用,auditctl -w /bin/su -p x -k su_switch - 测试验证: 使用非运维组用户执行
su -,确认被拒绝;运维组用户正常切换。
经验总结: 云服务器上务必结合密钥登录、双因素认证进一步加固,切勿仅依赖密码保护 su 权限,酷番云提供一键安全加固镜像,可预置上述配置,帮助用户快速达标。
最佳实践与建议
- 避免直接使用 root 密码, 通过 wheel 组+su 或 sudo 进行管理。
- 对所有 su 和 sudo 操作开启日志, 并定期巡检
/var/log/secure。 - 使用 sudo 的
Defaults logfile指定日志路径, 便于与 SIEM 系统集成。 - 定期审计 wheel 组成员, 移除不再需要的用户。
- 若必须使用 su,考虑设置
su的 TMOUT 超时, 防止未锁屏终端被滥用。
常见问题解答
Q1:为什么我配置了 wheel 组限制后,root 用户也无法通过 su 切换到其他用户?
解答: 默认 pam_wheel 模块仅限制从普通用户切换到 root,root 用户切换到其他用户不受影响,若 root 也无法切换,请检查 /etc/pam.d/su 中是否添加了 auth required pam_wheel.so 且未指定 group=root,或存在其他 PAM 冲突。建议: 在 auth required pam_wheel.so 前添加 auth substack system-auth 确保不影响 root 自身权限。
Q2:在云服务器上,直接禁止 su 而只使用 sudo,是否可行?
解答: 完全可行,且是推荐做法,许多云厂商(包括酷番云)的官方镜像默认禁用 root 密码登录,并通过 sudo 进行管理。操作步骤: 删除 /etc/pam.d/su 中的 pam_wheel 相关行,将所有管理员加入 sudo 组,并在 /etc/sudoers 中设置 Defaults rootpw 或 %sudo ALL=(ALL) ALL。注意: 务必保留一个具有 sudo 权限的普通用户,避免意外锁定。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/628303.html


评论列表(3条)
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是使用部分,给了我很多新的思路。感谢分享这么好的内容!
@lucky542girl:读了这篇文章,我深有感触。作者对使用的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是使用部分,给了我很多新的思路。感谢分享这么好的内容!