SELinux零知识学习八、SELinux策略语言之客体类别和许可(2)

接前一篇文章:SELinux零知识学习七、SELinux策略语言之客体类别和许可(1)

一、SELinux策略语言之客体类别和许可

2. 在SELinux策略中定义客体类别

SELinux策略中必须包括所有SELinux内核支持的客体类别和许可声明 ,以及其它客体管理器 。通常,对于策略开发者而言,其并不关系创建一个全新的客体类别,但要想写出高效的SELinux策略,对客体类别是如何定义的 必须要理解透彻。理解客体类别和许可声明的语法是非常有用的,因为它让我们有机会理解当前使用的策略版本中支持的客体类别和许可

添加新的客体类别和许可

添加新的客体类别和修改现有客体类别的许可是一项复杂的任务,仅当修改真实系统代码本身时应该这样做,与SELinux策略语言的其它方面不同客体类别和许可依赖于Linux的实现细节 ,特别是内核。实际上,客体类别和许可被设计为尽可能准确地代表系统执行的资源,正是由于这个原因,改变客体类别或在系统中改变相应的许可才变得有意义。

保证客体类别和许可中类型改变的一个实例是一种新形势的进程间通信(IPC),在这个例子中,一个全新范畴的资源被添加,一个新的客体类别也将会是必须的,它准确地代表了这个资源的语义。

添加或修改客体类别或许可 需要同时修改策略基于新的客体类别或许可的强制访问控制系统代码 。如果只添加了一个客体类别 ,但没有修改系统代码 ,除了浪费核心内存外,可能没有什么作用

基本上,除了SELinux策略编者和系统管理员外,其他人应该永远都不会改变客体类别和许可的定义。

(1)声明客体类别

客体类别使用声明语句声明 的,类别声明语句只是简单地声明了一个客体类别名字,无其它内容了。例如:我们使用下面的指令为目录声明了一个客体类别(名叫dir)。

cpp 复制代码
class dir

类别声明语句是由关键词class后跟类别名字组成的。注意类别声明语句与其它策略语言的区别,在声明语句的末尾是没有分号的客体类别名字具有独立的命名空间,但实际编写策略时,客体类别、许可、类型等通常都是使用的相同的名字。

客体类别声明语法

客体类别声明语句允许你声明客体类别名字,完整的类别声明语句语法如下:

class 类别名字

  • 类别名(字)

客体类别的标识符,其长度不定,可以包括ASCII字母或数字。

类别声明只在一个策略基础载入模块中有效在有条件限制的语句非基础载入模块中 都是无效的。

相关推荐
ttdevs1 个月前
【Android】ServiceNotFoundException: No service published for: search
android·framework·aosp·selinux·search
-兮2 个月前
Ubuntu的SELinux
linux·运维·安全·ubuntu·selinux
Sgq丶4 个月前
Android 13 aosp 默认关闭SELinux
android·aosp·selinux
凯文的内存5 个月前
高通平台Android11 添加新分区的方法
android·partition·添加分区·selinux·build·vold
guitarjoy6 个月前
Android - 深入浅出理解SeLinux
android·selinux
Android系统攻城狮6 个月前
Android14之selinux报错:ERROR: end of file in comment(一百九十七)
selinux·android14
Sgq丶7 个月前
Android 11 访问 Android/data/或者getExternalCacheDir() root方式
android·framework·selinux·permissions
Android系统攻城狮8 个月前
Android14之audit2allow自动生成Selinux规则(一百七十五)
selinux·audit2allow
树下一少年9 个月前
SElinux工作原理简介并演示chcon、semanage、restorecon的使用方法
linux·服务器·网络·安全策略·selinux
darkdragonking9 个月前
Centos7、Mysql8.0 load_file函数返回为空的终极解决方法--暨selinux的深入理解
mysql·selinux