CentOS SELinux 模块加载流程
一 前置检查与准备
getenforce、sestatus。配置文件:/etc/selinux/config(设置 SELINUX=enforcing|permissive;策略类型 SELINUXTYPE=targeted|mls)。临时切换:sudo setenforce 1|0。若为 Disabled,需改为 Permissive 后重启,完成文件重新标记再切回 Enforcing。目标策略通常为 targeted。这些步骤确保内核与用户态工具就绪、策略存储可用。二 模块加载的两条路径
semodule -i <module.pp> 将模块安装到当前策略存储;已存在同名模块会被升级。常用:semodule -l 查看已加载模块,semodule -r <name> 卸载模块。此方式由工具自动完成校验、依赖解析与策略数据库更新,适合生产环境。checkmodule -M -m -o <mod>.mod <mod>.te 编译模块,再用 semodule_package -o <mod>.pp -m <mod>.mod 打包为 .pp;最后 semodule -i <mod>.pp 加载。该流程便于按需定制与迭代策略。三 加载后的生效与验证
semodule -l | grep <module>;sestatus(关注 Loaded policy name、Mode、Policy from config file);sudo ausearch -m avc -ts recent 或 sudo cat /var/log/audit/audit.log | grep AVC | audit2why,必要时用 audit2allow -M <name> 生成修复模块再加载。四 常见注意事项
restorecon);功能开关可通过 SELinux 布尔值 调整(如 setsebool -P <name> on|off),减少定制模块数量。