SELinux的策略模块(包含规则定义)默认存储在/etc/selinux/targeted/policy/目录下。其中:
policies/子目录存放预编译的策略模块文件(如myapp.pp,自定义策略的编译结果);policy.<version>文件(如policy.31)是当前激活的策略二进制文件,由.te(策略源文件)编译生成。若需手动编写SELinux规则,可通过以下路径操作:
/etc/selinux/targeted/policy/policies/,在此创建以.te为后缀的源文件(如myapp.te),编写规则语法(如allow httpd_t myapp_file:file { read open };);/usr/share/selinux/targeted/policy/policies/,包含系统内置的策略模块源文件(如httpd.te),可供参考。手动编写的.te文件需编译为.pp(策略包)后加载:
checkmodule -M -m -o myapp.mod myapp.te(生成.mod中间文件);semodule_package -o myapp.pp -m myapp.mod(生成.pp策略包);semodule -i myapp.pp(将策略包安装至内核,规则生效)。除策略模块外,以下文件也涉及SELinux规则的管理:
/etc/selinux/targeted/contexts/files/file_contexts.local,用于添加自定义文件/目录的SELinux标签(如/path/to/file system_u:object_r:custom_t:s0),需通过restorecon命令应用;setsebool命令管理的开关规则(如httpd_can_network_connect),持久化配置需添加-P参数(如setsebool -P httpd_can_network_connect 1)。sestatus确认当前模式(Enforcing/Permissive),避免误操作导致系统故障;audit2allow工具分析/var/log/audit/audit.log中的拒绝日志生成(如grep "avc:" /var/log/audit/audit.log | audit2allow -M myapp),确保规则准确性。