SELinux 策略在麒麟上怎么局部调整
讲银河麒麟上 SELinux 策略的局部调整方法:先看懂告警日志、用自定义策略放行特定行为,而不是整体降级;给出从查看到恢复默认的操作顺序。
结论先行
SELinux 拦住业务时,不要直接把 V11 服务器条目 整体切到关闭/宽容,而是定位到被拦的具体行为,用自定义策略(policy module)放行。整体放宽属于降级,信创验收通常不被接受。
先看被拦的是什么
# 看 SELinux 拒绝日志
ausearch -m avc -ts recent
# 临时切宽容模式观察(仅排查期用)
setenforce 0
# 排查完务必切回
setenforce 1
日志里能看到「谁(进程 context)访问了谁的什么资源、被哪条规则拒绝」。
局部放行的正确姿势
- 从告警日志生成局部规则:
grep refused /var/log/audit/audit.log | audit2allow -a > local.rules - 编译成策略模块:
semodule -a --extract相关模块后semodule -n local(或checkpolicy -M编译)。 - 验证放行生效、且没有放宽到面。
- 模块纳入变更管理,写清放行理由。
宽容模式只用于定位问题;定位完就恢复默认。默认模式与策略文件位置见 V11 服务器条目。
桌面环境的差异
桌面版(如 V11 桌面)的默认策略通常比服务器宽松,桌面端遇到个别应用被拦,先试宽容模式复现,再决定是否需要定制模块。
改坏了怎么恢复
- 模块问题:
semodule -l列出已加模块,逐个semodule -r移除。 - 策略无法加载导致起不来:SELinux 无法关闭时通常仍可启动进宽容态,再清损坏模块。
- 介质参考 麒麟系列总览;离线介质制作参考 Rufus 条目。