银河麒麟系统禁止普通用户su有四种方法:一、启用PAM wheel组限制;二、在sudoers中禁止/bin/su调用;三、修改su权限为4750实现物理屏蔽;四、通过kysec框架全局拦截su调用。

在银河麒麟操作系统中,防止普通用户通过su命令切换至root或其他用户,是终端安全加固的关键动作;若不加限制,攻击者可能利用弱密码或凭证泄露直接获得高权限会话。
修改su二进制文件权限(物理级禁用)
该方式不依赖PAM或服务状态,直接剥夺普通用户执行su程序的能力,效果立竿见影且难以绕过。
1、检查当前su权限:运行 ls -l /bin/su,确认输出为 -rwsr-xr-x(即其他用户有执行权)。
2、执行命令移除others执行位:sudo chmod 4750 /bin/su。这一步将权限从755变为750,保留root和root组可执行,但彻底屏蔽普通用户调用能力。
3、验证修改结果:再次运行 ls -l /bin/su,必须看到权限字段末三位为 ---,且所属组为root。
4、切换至普通用户(如test),执行 su -c 'id',应立即返回 bash: /bin/su: Permission denied。
通过kysec加固框架全局拦截su调用
kysec是麒麟OS深度集成的内核级安全框架,启用enforcing模式后可直接在系统调用层拦截su行为,比文件权限控制更底层。
方法一:停用kysec对su的放行策略
执行 sudo kysec disable → sudo systemctl restart kysec,确保kysec处于enforcing状态而非permissive。
方法二:手动注入su拦截规则(需root权限)
运行 echo 'rule su deny' | sudo tee -a /etc/kysec/rules.d/su-deny.rule → sudo kysec reload。
注意:kysec规则文件必须以.rule结尾且位于/etc/kysec/rules.d/下,否则reload时不会加载。
卸载su命令(极端场景适用)
仅适用于完全不需要su功能的封闭终端环境,例如政务专网离线工作站。
第一步:确认su未被其他关键包依赖 → 运行 dpkg -S /bin/su(Debian系)或 rpm -qf /bin/su(RHEL系),输出应为 login 或 shadow-utils。
第二步:强制移除su二进制 → sudo rm -f /bin/su。
第三步:创建空占位符并锁定权限 → sudo touch /bin/su && sudo chmod 000 /bin/su,防止软件包更新自动恢复。
第四步:验证效果 → 普通用户执行 which su 返回空,且 su 命令无法被识别。











