selinux是利用lsm劫持程序的行为的mac访问审计方式,具体实现原理这里不讨论。
核心原理就是主客体通过策略规则限定程序访问范围。
安全上下文是整个安全机制的重要概念,分为用户,角色,类型和级别:
1、用户(user)
unconfiged_u:不受限用户
system_u:系统进程
在 targeted policy 中 users 不是很重要;
在strict policy 中比较重要,所有预设的 SELinux Users 都是以 “_u” 结尾的,root 除外。
2、角色(role)
Object_r:代表文件或目录等文件资源
system_r:代表进程
个人理解这个主要是用来识别主客体的。
3、类型
文件资源成为类型(type)
进程称为域(domain)
这两个属性相互对应才能获取资源
4、等级
类型强制(TE)访问控制
• 源类型(Source type(s) ) 通常是尝试访问的进程的域类型
• 目标类型(Target type(s) ) 被进程访问的客体的类型
• 客体类别(Object class(es)) 指定允许访问的客体的类型
• 许可(Permission(s)) 象征目标类型允许源类型访问客体类型的访问种类
allow user_t bin_t : file {read execute getattr};
目标类型是一个集合,客体类别指定其中的某些项,许可就是访问方式。
资源类型随意定义是优势也是难点,很容易造成混乱。