当前位置: 首页 > article >正文

SELinux零知识学习十九、SELinux策略语言之类型强制(4)

接前一篇文章:SELinux零知识学习十八、SELinux策略语言之类型强制(3)

二、SELinux策略语言之类型强制

2. 类型、属性和别名

(4)别名

别名是引用类型时的一个备选的名字,能够使用类型名的地方就可以使用别名,包括TE规则、安全上下文和标记语句。别名通常用于策略改变时保持一致性,例如:一个旧策略可能引用了类型netscape_t,更新后的策略可能将类型名改为mozilla_t了,因此同时提供了一个别名netscape_t以保证与旧模块能够正常兼容。

两种方式进行别名声明。第一种方式是在使用type语句声明类型的同时就声明别名。因此在type语句中,声明mozilla_t类型时,可以使用关键字alias声明一个别名netscape_t,如:

type mozilla_t alias netscape_t, domain;

注意:别名声明是放在属性的前面的

第二种方式是使用typealias语句独立于type语句单独声明别名。下面的语句等同于单条type语句:

# 下边这两条语句等同于
type mozilla_t, domain;
typealias mozilla_t alias netscape_t;

# 下边这一条语句
type mozilla_t alias netscape_t, domain;

当策略的结构难以在声明类型时同时声明别名的时候,typealias语句很有用。完整的typealias语句语法如下:

typealias 类型名称 alias 别名名称

  • 类型名称

要添加别名的类型的名称,类型必须使用type语句单独声明,并且此处只能指定一个类型名称。

  • 别名名称

一个或多个别名标识符,其命名约束与类型一样。如果同时指定多个别名,别名之间用空格分开,并使用大括号将所有别名括起来,如{aliasa_t aliasb_t}。

域类型和其他类型

我们在“类型”这个词之前加上其它形容词,如:“文件类型”、“目录类型”,这些形容词只是为了描述出类型的用途方向,并没有其它含义,例如文件类型指的是安全上下文中引用的类型与文件有关。事实上,类型也可以用于其它客体类别,在策略语言中对这些类型的用途并没有做限制,SELinux中的所有类型地位相同,都可以用于标记任何客体类别实例,只要授予了适当的访问权。

例如httpd_t域类型可以同时用于进程和文件,再加上一些额外的规则。按照惯例,这在SELinux策略中是要避免出现的,主要是为了使策略更清晰,但在某些情况下,我们需要将同一个类型既用作域类型又要用作文件类型,这完全取决于策略编写者的爱好了。

然而,就域类型而言,出于一些技术上的原因,也最好不要在文件和目录上使用它们。在Linux中,每个进程和文件都会在/proc/文件系统中由内核创建一个,这些客体用于获取和设置这些进程的属性。在SELinux中,进程的类型自动用于这些文件和目录。对于类型为httpd_t的进程而言,如果进程ID是1000,目录/proc/1000/和它下面包括的所有文件及子目录都自动具有httpd_t类型。如果httpd_t也用于普通文件,这就意味着授予其它普通文件访问权时,可能同时也授予了/proc/目录下的文件和目录同等的访问权,这可能并不是所希望的。


http://www.kler.cn/news/134940.html

相关文章:

  • SpringCloud微服务:Nacos的集群、负载均衡、环境隔离
  • 设置 wsl 桥接模式
  • 为什么越来越多人选择学习Python?
  • SystemV共享内存
  • 一生一芯18——Chisel模板与Chisel工程构建
  • 安防视频监控平台EasyCVR服务器部署后出现报错,导致无法级联到域名服务器,该如何解决?
  • 数据结构——树状数组
  • 拜托!佛系点,你只是给社区打工而已
  • 设计模式(5)-使用设计模式实现简易版springIoc
  • 单链表相关面试题--3.给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点
  • Java的IO流-打印流
  • 【机器学习】特征工程:特征选择、数据降维、PCA
  • OpenCV C++ 图像 批处理 (批量调整尺寸、批量重命名)
  • 关于漏洞:检测到目标SSL证书已过期【原理扫描】
  • 自用函数(持续更新)
  • 数理统计的基本概念(一)
  • Selenium UI 自动化
  • Mapmost Alpha,一款非常好用且强大的三维城市创建工具~!
  • 反渗透水处理成套设备有哪些
  • 分享职业技术培训类型
  • HarmonyOS脚手架:快捷实现ArkTs中json转对象
  • Linux环境搭建(tomcat,jdk,mysql下载)
  • JS进阶——高阶技巧
  • 2 Redis的高级数据结构
  • 2024年测试工程师必看系列之fiddler设置手机端抓包全套教程
  • 为什么选择B+树作为数据库索引结构?
  • 前端常用utils方法持续更新中
  • 为什么同样是做测试,别人年薪30W+?我10k!!!
  • 采集淘宝天猫整店商品api(店铺列表、店铺所有商品)
  • Unity中 Start和Awake的区别