深入探索SELinux策略开发
1. SELinux策略模块的编写格式
SELinux策略模块有多种编写格式,每种格式都有其特点和适用场景:
-SELinux原生格式:不理解参考策略宏,但它是基础的策略开发方法,至今仍在使用,参考项目甚至依赖此格式来构建自己的规则集。
-参考策略风格:提供了宏,方便SELinux策略开发,同时仍支持SELinux原生格式的大部分语法,从SELinux原生格式过渡到参考策略风格相当简单。
-CIL格式:这是一种全新的SELinux策略开发语言,不过最终仍会映射到常见的SELinux语言结构。最近的SELinux用户空间会在底层将前两种格式转换为CIL格式。
使用自定义模块(而非依赖audit2allow)更受青睐,因为它能让管理员对添加的策略规则有更多控制权,还能跟踪策略更新,包括策略规则内解释添加规则原因的注释。
2. 构建SELinux原生模块
原生SELinux策略语言模块以定义模块名称的行开头,接着是一组需求(类型或属性、类和权限),最后是规则本身。以下是一个示例策略文件:
# cat localpolicy.te module localpolicy 1.0; require { type setkey_t; type newrole_t; class fd { use }; } allow setkey_t newrole_t:fd use;</