在上一篇博客http://blog.csdn.net/keheinash/article/details/68945914说明了如何在不重新编译整个SELinux源码的情况下,单独编译加载一个模块。这次在模块里增加一个type_transition的实例,并且编译加载,检查是否生效。
type_tansition的作用和语法
SELinux中,安全上下文(Security Context)的定义是User:Role:Type:MLS。在TE(Type Enforcement)策略中,Type(类型)是我们需要重点关注的。
type_transition是类型转换语句,允许主体或者客体在条件符合的情况下,将安全上下文中的type转移成为指定的类型。一般适用于两种场景:
1.进程创建新的客体时,新客体的类型来自type_transition的规定
2.进程执行execve系统调用后,进程的新类型来自type_transition的定义
type_transition的语法:
type_transition source_type target_type : class default_type;
策略编写
下面针对第二种场景,我们就在上一篇博客中使用的myapp模块加入type_transition策略:让一个source_type的进程,在执行target_type的可执行文件后,进程的类型变为default_type。并且加载编译加载myapp模块,并检查策略是否生效。
在这个场景下,我们先找到source_type是哪一种类型。