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

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

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

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

2. 类型、属性和别名

(3)关联类型和属性

1)使用type语句关联类型和属性

迄今为止,我们已经讨论了如何定义类型和属性,下面将要讲述的是如何将它们关联起来。最常见的关联方式是在用type语句声明类型时就指定其属性。例如,我们可以将声明http_user_content_t类型的语句修改为:

type http_user_content_t, file_type;

这个语句描述了声明类型http_user_content_t时,同时关联了file_type属性。它会自动向具有file_type属性的类型组中添加http_user_content_t类型。但从概念上讲,它实质上已经改变了http_user_content_t类型的性质,因为它现在已经具有基于属性的访问许可了,而不只局限于类型本身了。

http_user_content_t代表了Web服务器要使用的所有文件,而属性表示可以将它们一致使用。在这个例子中,创建的属性叫做file_type,它代表所有永久存储的文件。因此,我们就可以只写一条规则来访问所有文件了,再也不用为每个文件编写一条规则了。

一个类型可以有多个属性。例如:可以再为所有Web服务器要用的文件创建一个属性httpdcontent,拥有httpdcontent属性的类型可能是拥有file_type属性类型的一个子集。下面的代码扩展了前面的例子:

type httpd_user_content_t, file_type, httpdcontent;
type shadow_t, file_type;allow backup_t file_type : file read;
allow httpd_t httpdcontent : file read;

现在我们给httpd_user_content_t添加了两个属性:file_type(表明这是一个在磁盘上的文件的类型)和httpdcontent(表明这个类型Web服务器是可读的)。对于具有更多特权的shadow_t类型,我们只关联了file_type属性(因为对于一个Web服务器而言,要是能够显示shadow密码文件,并不安全)。同时,我们也使用了两条allow规则为Web服务器和备份程序授予了需要的访问权,结果就是Web服务器(httpd_t)可以访问具有httpcontent属性的文件,但不能访问其它文件,如具有shadow_t类型的文件。换句话说,备份程序(backup_t)可以访问所有具有file_type属性的文件。

类型具有的属性数量没有限制,就和类型一样,我们可以合理定义相应的属性。

注意:其实在实际环境中,能够定义的类型的数量也就几千个,因为数量太大时,与之关联的TE规则可能就会变得非常笨重、难以控制。因此,到目前为止看到的最复杂的策略,其中也没有超过2000个类型和属性声明。

2)使用typeattribute语句关联类型和属性

除了使用type语句关联类型和属性外,还可以使用typeattribute语句(关联类型和属性)。typeattribute语句允许我们在声明类型时单独关联属性,在策略中可能也就是一个单独的文件了。即在类型声明时,如果没有关联属性,则可以使用此语句进行类型和属性的关联。

typeattribute语句完整语法如下:

typeattribute 类型名 属性名;

  • 类型名

添加到属性上的类型的名称,类型名必须事先使用type语句进行声明,而且这里只能出现一个类型名。

  • 属性名

一个或多个事先声明的属性标识符,如果指出多个属性标识符,属性标识符之间用都好分隔。如:

typeattribute bin_t file_type, exec_type;

typeattribute语句在单个策略、基础载入模块和非基础载入模块中都是有效的,只有在条件语句中无效

例如:将前面的示例语句

type httpd_user_content_t, file_type, httpdcontent;

分成两条语句进行表述

# 下面是两条语句
type httpd_user_content_t;
typeattribute httpd_user_content_t file_type, httpdcontent;

实际上,这两条语句的作用等同于上边那条(单个)语句。

仅从这个例子还看不出为什么需要typeattribute语句,但阅读到后面的章节时,你会发现,使用它客体使语句变得更加清晰。从根本上上说,这个语句允许我们在一个地方定义类型,而在另一个地方关联属性,从而增强了语言的灵活性。在设计设个策略时,可以考虑进行模块化设计了。

警告:属性是策略语言很方便的一个特性,但它也很危险。将属性和类型关联后,可能会扩大对类型的访问权。这个访问权可能是也可能不是恰当的,主要依赖于实际的安全目标。例如:将一个域类型关联上一个属性后,可能扩大了该类型的访问权,而你可能不会完全感受到。这就跟授予一个进程强大的特权类似。因此,你应该确定属性的访问权对于类型是恰当的,并注意TE规则引用属性时的影响。

相关文章:

  • JVM bash:jmap:未找到命令 解决
  • 验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
  • 创建一个用户test且使用testtab表空间及testtemp临时表空间并授予其权限,密码随意
  • Linux终端与交互式Bash
  • uniapp 手动调用form表单submit事件
  • C#,数值计算——插值和外推,曲线插值(Curve_interp)的计算方法与源程序
  • 【Oracle 客户端连接数据库过程解析】
  • 若依启动步骤
  • 数据采集与大数据架构分享
  • Spring Boot - filter 的顺序
  • 三十分钟学会zookeeper
  • uniapp app tabbar 页面默认隐藏
  • 【【萌新的SOC学习之 VDMA 彩条显示实验之一】】
  • 配置Nginx服务器用于Web应用代理和SSL{仅配置文件}
  • Eclipse切换中文环境
  • Angular 2 DI - IoC DI - 1
  • docker容器内的网络抓包
  • ES6之路之模块详解
  • JavaScript新鲜事·第5期
  • leetcode讲解--894. All Possible Full Binary Trees
  • maven工程打包jar以及java jar命令的classpath使用
  • scala基础语法(二)
  • TypeScript迭代器
  • TypeScript实现数据结构(一)栈,队列,链表
  • Vim 折腾记
  • vue:响应原理
  • 产品三维模型在线预览
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端相关框架总和
  • 思否第一天
  • 写给高年级小学生看的《Bash 指南》
  • 新手搭建网站的主要流程
  • 【干货分享】dos命令大全
  • ​520就是要宠粉,你的心头书我买单
  • ​香农与信息论三大定律
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1)(1.9) MSP (version 4.2)
  • (9)目标检测_SSD的原理
  • (c语言)strcpy函数用法
  • (Java数据结构)ArrayList
  • (Matlab)使用竞争神经网络实现数据聚类
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (搬运以学习)flask 上下文的实现
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (多级缓存)缓存同步
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (转)LINQ之路
  • .net 按比例显示图片的缩略图
  • .net 流——流的类型体系简单介绍
  • .net 中viewstate的原理和使用
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • /etc/shadow字段详解
  • @31省区市高考时间表来了,祝考试成功
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限