统信UOS桌面版默认未启用SELinux,实际采用AppArmor与自研安全模块混合策略;启用SELinux需确认内核支持(CONFIG_SECURITY_SELINUX=y)、安装selinux-basics等工具包,执行selinux-activate并重启,再通过/.autorelabel重标上下文、audit2allow生成自定义策略模块并加载,最终setenforce 1切换至强制模式。

统信UOS桌面版默认未启用SELinux,系统实际使用的是基于AppArmor与自研安全模块的混合策略体系;若需在UOS上配置SELinux策略,必须先确认内核已编译SELinux支持、安装相关工具包,并手动替换默认安全模块,否则所有配置操作均无法生效。
确认内核与基础环境是否支持SELinux
执行命令 getenforce,若返回 Disabled 或提示命令未找到,说明当前系统未启用SELinux且可能未安装必要组件。
运行 zcat /proc/config.gz | grep CONFIG_SECURITY_SELINUX(如提示无此文件,则尝试 grep CONFIG_SECURITY_SELINUX /boot/config-$(uname -r)),确认输出为 CONFIG_SECURITY_SELINUX=y;若为 =m 或未出现该行,【代表内核不支持SELinux,后续所有步骤将失败】。
安装SELinux工具集:sudo apt install -y selinux-basics selinux-policy-default auditd。注意:UOS 1070e及更新版本的APT源中该包名有效,旧版需先启用uos-security软件源。
启用SELinux并切换至强制模式
执行 sudo selinux-activate,该命令会自动完成以下操作:备份原始/etc/selinux/config → 写入SELINUX=enforcing和SELINUXTYPE=refpolicy → 创建/usr/share/selinux/refpolicy符号链接。
重启系统使内核参数生效;启动后立即执行 sudo setenforce 1 强制切入Enforcing模式(仅临时生效,验证用)。
验证状态:getenforce 应返回 Enforcing,sestatus -v 应显示策略类型为refpolicy、策略加载成功、且Current mode:与Mode from config file:均为enforcing。
配置用户域与文件上下文
方法一:为普通用户分配受限shell域
编辑/etc/selinux/refpolicy/src/policy/users.fc,在末尾添加:/home/[^/]*/.* system_u:object_r:user_home_t:s0;然后执行 sudo make -C /etc/selinux/refpolicy/src policy → sudo semodule -i /etc/selinux/refpolicy/src/policy/policy.kern。
方法二:批量重标文件系统上下文
首次启用后必须执行完整重标:sudo touch /.autorelabel && sudo reboot;系统重启时会自动调用fixfiles遍历全盘并应用默认策略上下文。
注意:若跳过/.autorelabel直接使用restorecon -Rv /,部分关键路径(如/etc/shadow、/var/log/audit/)可能因策略未加载而标错,导致登录失败或审计服务崩溃。
编写并加载自定义策略模块
第一步:捕获拒绝日志
开启permissive模式收集异常:sudo setenforce 0 → 正常操作目标业务(如启动某服务)→ 执行 sudo ausearch -m avc -ts recent | audit2why 查看被拒原因。
第二步:生成策略模块
将拒绝记录转为可加载模块:sudo ausearch -m avc -ts recent | audit2allow -M myapp_policy;生成的myapp_policy.te需人工检查,删除含sys_admin、security_compute_create等高危权限的行。
第三步:编译并部署sudo checkmodule -M -m -o myapp_policy.mod myapp_policy.te → sudo semodule_package -o myapp_policy.pp -m myapp_policy.mod → sudo semodule -i myapp_policy.pp。
最后切回强制模式:sudo setenforce 1,并用sestatus -b | grep current确认current_mode为enforcing。











