麒麟os可通过三种方式实现应用白名单管控:一、ukui桌面环境限制.desktop文件可见性与执行权限;二、kysec模块标记可信可执行文件;三、pam exec模块在会话层拦截非白名单程序启动。

如果您希望在麒麟OS中限制用户仅能运行指定应用程序,防止未经授权的程序启动或执行,则需通过系统级白名单机制实现应用行为管控。以下是多种可行的配置方法:
一、启用UKUI桌面环境应用白名单
该方法通过dconf配置锁定UKUI桌面启动器中可见且可执行的应用列表,仅保留预设安全应用的.desktop文件入口,从图形界面层阻断未授权程序调用。
1、以root身份切换至childuser账户并首次登录一次,确保其dconf用户数据库已生成。
2、执行命令设置允许启动的应用列表:sudo -u childuser dbus-run-session gsettings set org.ukui.menus applications "['org.gnome.Nautilus.desktop', 'org.gnome.TextEditor.desktop']"
3、批量禁用系统级所有.desktop文件的执行权限:sudo find /usr/share/applications/ -name "*.desktop" -exec sudo chmod 600 {} \;
4、对高风险应用(如Firefox、Chrome)单独移除执行位并重命名其.desktop文件:sudo chmod -x /usr/bin/firefox && sudo mv /usr/share/applications/firefox.desktop /usr/share/applications/firefox.desktop.disabled
二、使用KYSEC执行控制模块添加脚本与程序白名单
KYSEC是麒麟OS内建的安全子系统,exectl标签用于标记可信可执行文件,一旦授信,系统将不再弹出“是否允许执行”提示,适用于运维脚本、定制工具等自动化场景。
1、以root或具备kysec_set权限的用户执行命令添加单个脚本白名单:kysec_set -n exectl -v verified /path/to/script.sh
2、为整个目录递归添加白名单(仅限目录路径):kysec_set -r -n exectl -v verified /opt/trusted-tools/
3、为已安装软件包全部文件统一授信:kysec_set -n exectl -v verified --package wps-office
4、验证白名单状态:执行kysec_get -n exectl /path/to/script.sh,输出应显示label_value为verified。
三、配置PAM应用启动拦截策略
利用Linux PAM的exec模块,在用户会话初始化阶段检查待执行程序路径,若不在白名单内则直接拒绝fork/exec调用,该策略作用于所有shell及GUI子进程,具备强拦截能力。
1、编辑PAM会话配置文件:sudo nano /etc/pam.d/common-session
2、在文件末尾添加以下行:session required pam_exec.so /usr/local/bin/check_app_whitelist.sh
3、创建校验脚本并赋予执行权限:sudo tee /usr/local/bin/check_app_whitelist.sh
4、脚本内容需包含白名单路径比对逻辑,例如检测$PAM_EXEC_ARG是否属于/usr/bin/nano、/usr/bin/vim等预设路径,不匹配则exit 1。
四、基于iptables规则实现网络应用级白名单
当需限制特定应用仅能访问指定IP或端口时,可通过iptables结合owner模块识别进程所属用户,对outbound流量实施出口白名单控制,适用于浏览器、即时通讯类应用的联网行为约束。
1、加载iptables owner模块支持:sudo modprobe xt_owner
2、创建专用链用于白名单过滤:sudo iptables -N APP_WHITELIST_OUT
3、为指定用户(如childuser)的出站连接跳转至白名单链:sudo iptables -A OUTPUT -m owner --uid-owner childuser -j APP_WHITELIST_OUT
4、仅放行目标IP与端口(示例:仅允许访问114.114.114.114的53端口):sudo iptables -A APP_WHITELIST_OUT -d 114.114.114.114 -p udp --dport 53 -j ACCEPT
5、拒绝其余所有连接:sudo iptables -A APP_WHITELIST_OUT -j REJECT










