麒麟系统禁用普通用户su需四路径:pam wheel组限制(默认推荐)、su二进制权限修改(-rwsr-x---)、kysec框架全局拦截(enforce模式下改allow_su=false)、sudoers显式禁止/bin/su调用。

在麒麟操作系统中,普通用户执行su命令切换到root账户会带来权限失控风险,必须通过系统级策略阻断该行为。禁用操作需从认证层、权限层、二进制层和框架层四条路径入手,任选其一即可生效,多层叠加可增强防护强度。
启用PAM wheel组限制机制
该方法在用户输入密码前即拦截非授权调用,不依赖sudo服务状态,是银河麒麟V10默认推荐的安全控制手段。
第一步:以管理员身份打开PAM配置文件:sudo vim /etc/pam.d/su
第二步:找到包含pam_wheel.so的行,确保其未被注释且参数完整:auth required pam_wheel.so use_uid。若该行被#号注释,直接删除#并保存;若不存在,手动添加此行至文件开头附近。
第三步:将需保留su权限的用户加入wheel组,例如授权用户adminuser:sudo usermod -aG wheel adminuser
第四步:验证当前普通用户是否不在wheel组中:groups输出不应含wheel;执行su -c 'id'应立即返回Permission denied而非密码提示。
修改su二进制文件权限实现硬性屏蔽
此方式直接剥夺普通用户对su程序的执行资格,无需重启服务或等待PAM模块加载,适用于高安全等级隔离环境。
检查当前su权限:ls -l /bin/su
若输出为-rwsr-xr-x(即other位含x),说明普通用户仍可执行。执行以下命令移除others执行位:sudo chmod 4750 /bin/su
【执行后su文件权限必须变为-rwsr-x---,否则普通用户仍可能绕过】
验证结果:ls -l /bin/su应显示第三段权限为---,且所属组为root。
通过kysec加固框架全局禁用su
kysec是麒麟深度定制的安全增强框架,在enforce模式下可拦截所有su系统调用链,包括shell内置调用和LD_PRELOAD劫持等绕过方式。
方法一:检查kysec当前状态:sudo kysec status,若返回enforcing则继续下一步。
方法二:编辑su策略文件:sudo vim /etc/kysec/sudo_policy.conf
将allow_su = true改为allow_su = false,保存退出。
方法三:重启kysec服务使策略生效:sudo kysec reload
测试:普通用户执行su --version应直接报错退出,不显示版本信息。
在sudoers中显式禁止/bin/su调用
该方法仅限制通过sudo间接调用su的路径,不影响su本身功能,适用于已启用sudo机制但需细化命令白名单的场景。
以管理员身份运行:sudo visudo
在文件末尾添加两行规则:
%admin ALL=(ALL) ALL,!/bin/su
%sudo ALL=(ALL:ALL) ALL,!/bin/su
保存退出后,visudo会自动校验语法。若提示错误需修正后再保存。











