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


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

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

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

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

    添加新的客体类别和许可

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

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

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

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

    (1)声明客体类别

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

    class dir

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

    客体类别声明语法

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

    class 类别名字

    • 类别名(字)

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

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

  • 相关阅读:
    java的调用百度接口工具方法(两个之间的距离)
    JS模块引入方式使用 importScripts 替代 import
    关键点检测 HRNet网络详解笔记
    微信小程序和 Vue 中的遍历循环和列表渲染有一些区别。
    【Python零基础入门篇 · 4】:字符串的运算符、下标和切片
    MODBUS-TCP转MODBUS-RTU通信应用(S7-1200和串口服务器通信)
    [音视频] SDL 渲染
    【Vue 快速入门系列】更新数据页面不渲染问题
    B-Tree 索引和 Hash 索引的对比
    基于vue框架潮牌官网设计与实现毕业设计源码010955
  • 原文地址:https://blog.csdn.net/phmatthaus/article/details/134425238