陕西网站备案 多久,韶关网站开发,wordpress中文安装竟然是英文的,wordpress高亮代码添加行号接前一篇文章#xff1a;SELinux零知识学习二十一、SELinux策略语言之类型强制#xff08;6#xff09; 二、SELinux策略语言之类型强制
3. 访问向量规则
AV规则就是按照对客体类别的访问许可指定具体含义的规则#xff0c;SELinux策略语言目前支持四类AV规则#xff1a…接前一篇文章SELinux零知识学习二十一、SELinux策略语言之类型强制6 二、SELinux策略语言之类型强制
3. 访问向量规则
AV规则就是按照对客体类别的访问许可指定具体含义的规则SELinux策略语言目前支持四类AV规则
allow表示允许主体对客体执行允许的操作。neverallow表示不允许主体对客体执行指定的操作。auditallow表示允许操作并记录访问决策信息。dontaudit表示不记录违反规则的决策信息且违反规则不影响运行。
1通用AV规则语法
虽然这些规则的用途不一样但它们的基本语法是一样的每个规则都包含了下面5个元素
规则名称
allowdontauditauditallow和neverallow。
源类型
授予访问的类型通常是进程尝试访问的域类型。
目标类型
客体的类型其被授权可以访问源类型。
客体类别
客体的类别。
许可
表示主体对客体访问时允许的操作类型也叫做访问向量。 3使用AV规则中的多类型和属性
在AV规则中的源和目标区域都没有限制类型和属性的数量相反可以在源和目标字段处列出多个类型和属性。如果有多个类型或属性时它们之间是用空格进行分隔并使用大括号将它们括起来如
allow user_t { bin_t sbin_t } : file execute;
在这个规则中目标是bin_t和sbin_t在源和目标区域有多个类型或属性时展开方法同单个属性一样。在前面的例子中内核包括两个密钥每个目标类型都有一个。
还可以在源或目标区域混合类型的属性也可以在这两个位置都使用混合的形式。如
allow {user_t domain} {bin_t file_type sbin_t} : file execute;
如果明确地列出了类型以及类型具有的属性这是可以的。既然这样我们实际上列出了两次类型内核会自动处理这个冗余只会处理一个实例规则。 4特殊类型self
策略语言保留了一个关键字self其用于AV规则中的目标区域可以当做一个类型使用。如下面这两条规则是等价的
# 这两条规则是相等的
allow user_t user_t : process signal;
allow user_t self : process signal;
关键字self说明目标类型使用源类型自身即目标类型等于源类型。前面的例子中第二条规则只是用关键字创建了一条规则表明源类型和目标类型都是user_t。
下面来看一个稍微复杂一点的例子
allow { user_t staff_t } self : process signal;
在这个例子中实际上创建了两条规则每条规则的源类型和目标类型都是相同的完全等同于下面这两条规则
allow user_t user_t : process signal;
allow staff_t staff_t : process signal;
注意在使用self时每个类型都创建了等同的规则。需要指出的是user_t不能访问staff_t反之亦然。
注意你可能只会在AV规则的目标区域使用特殊类型self特别要注意的是不能在AV规则的源区域使用self类型。另外也不能声明一个类型或属性标识符叫做self。
当AV规则的源类型为属性或一大串类型时self作为目标类型显得非常有用。例如假设我们想让每一个域都可以向自己发送信号那么可以编写如下规则
allow domain domain : process signal; # 这不是我们真正想要的
尽管这条规则实现了预期的目标每个域都可以向它自己发送信号但也将允许每个域类型向其它域类型发送信号这个非预期的结果可能成为一个安全灾难。通过self关键字可以确保每个域类型都只能访问它自身如
allow domain self : process signal; # 这才是我们真正想要的