openEuler 20.03 普通用户su切换root权限受阻的排查与两种修复方案

张开发
2026/4/19 20:20:01 15 分钟阅读

分享文章

openEuler 20.03 普通用户su切换root权限受阻的排查与两种修复方案
1. 问题现象与初步分析最近在openEuler 20.03系统上遇到一个典型问题普通用户admin尝试用su命令切换到root时系统直接返回拒绝权限的错误提示。这个现象看似简单但背后涉及Linux系统的安全机制设计。先来看具体报错[adminlocalhost ~]$ su - 密码 su: 拒绝权限这种情况在刚接触openEuler的新手中相当常见。我第一次遇到时也花了些时间排查后来发现这是openEuler基于PAM可插拔认证模块的安全策略在起作用。简单来说系统默认只允许特定用户组的成员执行su切换操作这是为了防止任意用户都能获取root权限导致的安全风险。2. 深入理解PAM机制2.1 PAM是什么PAMPluggable Authentication Modules是Linux系统的认证框架它通过模块化的方式管理系统认证流程。在openEuler 20.03中与su命令相关的PAM配置文件位于/etc/pam.d/su。这个文件决定了哪些用户、在什么条件下可以切换身份。我查看过多个Linux发行版的PAM配置发现openEuler的默认配置确实更严格。这种设计理念值得肯定——毕竟安全无小事。但这也给日常运维带来了一些小麻烦需要我们知道如何合理调整。2.2 关键配置项分析打开/etc/pam.d/su文件会看到这样一行关键配置auth required pam_wheel.so use_uid这行配置的意思是只有wheel用户组的成员才能使用su命令切换为root。wheel组在Unix-like系统中传统上就是特权用户组openEuler延续了这个设计理念。3. 解决方案一修改PAM配置3.1 操作步骤第一种解决方案是直接修改PAM配置这也是最快速的方法先用root身份编辑配置文件vi /etc/pam.d/su找到包含pam_wheel.so的那行在前面加上#号注释掉#auth required pam_wheel.so use_uid保存退出后新开终端窗口测试[adminlocalhost ~]$ su - 密码 [rootlocalhost ~]#3.2 安全考量这种方法虽然简单但从安全角度我并不推荐长期使用。它相当于完全放开了su权限限制任何知道root密码的用户都能切换身份。在生产环境中这可能会带来安全隐患。不过如果是个人开发环境或者确实需要完全放开权限的场景这个方法确实简单有效。我在测试环境中就经常这么处理毕竟方便性也很重要。4. 解决方案二调整用户组4.1 详细操作步骤第二种方案更符合安全最佳实践——将需要su权限的用户加入wheel组使用root执行以下命令usermod -G wheel admin验证用户是否已加入wheel组grep wheel /etc/group应该能看到类似输出wheel:x:10:admin新开终端测试su切换[adminlocalhost ~]$ su - 密码 [rootlocalhost ~]#4.2 原理与优势这种方法的核心思想是最小权限原则——只给确实需要的用户授权。相比第一种方案它有明显优势保持了系统的安全基线可以精确控制哪些用户有su权限符合企业级环境的安全管理要求我在生产环境中都采用这种方式配合sudo权限的精细分配既能满足日常运维需求又能最大限度降低安全风险。5. 两种方案的对比与选择5.1 功能对比特性修改PAM配置调整用户组操作复杂度简单直接修改配置文件需要用户组管理安全性较低放开所有用户权限较高可精确控制适用场景测试环境、个人开发机生产环境、多用户系统维护成本低一次性修改需要持续管理用户组成员5.2 选择建议根据我的经验给出以下实用建议如果是个人电脑或开发测试环境追求便利性可以选择方案一如果是生产服务器强烈建议采用方案二在方案二基础上可以结合sudo权限分配实现更精细的权限控制无论采用哪种方案都要确保root密码的强度和安全保管6. 常见问题排查6.1 修改后仍无法su有时候即使按照上述步骤操作问题可能依然存在。我遇到过几次这种情况通常是因为用户没有重新登录组权限变更需要用户重新登录才能生效存在多个PAM配置文件冲突检查/etc/pam.d/下其他相关配置SELinux策略限制可以暂时将SELinux设为permissive模式测试6.2 其他相关命令除了su命令这些命令也很有用查看用户所属组groups admin临时切换组身份newgrp wheel检查PAM模块文档man pam_wheel7. 安全加固建议虽然解决了su权限问题但安全防护不能松懈。分享几个我在实际工作中的经验定期审计wheel组成员确保只有必要用户拥有权限配置sudo替代部分su场景更细粒度的控制命令权限启用SSH密钥认证减少密码泄露风险配置fail2ban防护暴力破解定期检查auth日志grep su: /var/log/auth.log8. 延伸思考这个问题看似简单但反映了Linux系统权限管理的核心理念。openEuler默认的严格配置其实是个好设计它迫使管理员必须明确授权而不是随意使用root权限。我在团队内部推行最小权限原则时就经常用这个案例来说明不是系统难用而是安全需要。随着云原生和容器化的发展直接使用root的场景其实在减少这也是技术演进的一个有趣现象。

更多文章