麒麟os中强制禁止程序运行须用pam会话级拦截:编辑/etc/pam.d/common-session添加pam_exec.so调用校验脚本,脚本比对$pam_exec_path与allowed列表,不匹配则exit 1;或直接chmod -x禁用二进制执行权;或用kysec-exectl-add --path /xxx --policy deny打标拒绝。

在麒麟OS中,需通过命令行强制禁止某个程序运行,避免其被用户手动启动或由其他进程调用,必须绕过图形界面、不依赖桌面环境配置,直接作用于系统执行层。
使用PAM会话级拦截(最强效)
该方法在用户登录会话初始化阶段即介入,对所有 execve 系统调用做路径比对,未授权二进制文件一律拒绝加载,连终端中输入 ./xxx 或 bash -c 'xxx' 均无法绕过。
第一步:编辑PAM会话配置文件:sudo nano /etc/pam.d/common-session
第二步:在文件末尾新增一行:session required pam_exec.so /usr/local/bin/check_app_whitelist.sh
第三步:创建校验脚本并赋予可执行权限:sudo nano /usr/local/bin/check_app_whitelist.sh,写入以下内容:
#!/bin/bash
ALLOWED="/usr/bin/gvim /opt/wps-office/ksolauncher /usr/bin/nautilus"
if [[ ! " $ALLOWED " =~ " $PAM_EXEC_PATH " ]]; then
exit 1
fi
第四步:执行 sudo chmod +x /usr/local/bin/check_app_whitelist.sh。此后,任何不在 ALLOWED 列表中的程序(如 /usr/bin/firefox、/opt/qq/qq)将无法在该用户会话中启动,且不报错、不弹窗,直接静默失败。
禁用可执行文件本身(最直接)
适用于已知程序绝对路径且无需保留其安装包完整性的情况,操作后该文件彻底失去执行能力,普通用户即使复制到家目录也无法运行。
执行 sudo chmod -x /path/to/binary,例如:sudo chmod -x /usr/bin/chrome
若程序通过脚本启动(如微信的 run.sh),必须同时处理脚本和最终二进制:sudo chmod -x /opt/tencent/wechat/run.sh /opt/tencent/wechat/WeChat
【注意:此操作不可逆,恢复需重新安装或手动赋权;若程序被多个用户共用,会影响所有人】
利用KYSEC执行控制模块(系统级策略)
KYSEC是麒麟OS内置的安全子系统,exectl 模块可对可执行文件打标授信,未授信程序在内核态即被拦截,连 root 用户执行也会失败。
方法一:关闭 exectl 策略(全局放行)
执行 sudo setstatus -f exectl off,随后 getstatus 应显示 exec control: off
方法二:仅禁止特定程序(推荐)
先确认 KYSEC 已启用:getstatus | grep "exec control"
再执行 sudo kysec-exectl-add --path /usr/bin/firefox --policy deny
该命令将 firefox 标记为明确拒绝执行,无需重启,立即生效。











