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

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

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

3. 访问向量规则

AV规则就是按照对客体类别的访问许可指定具体含义的规则,SELinux策略语言目前支持四类AV规则:

  • allow:表示允许主体对客体执行允许的操作。
  • neverallow:表示不允许主体对客体执行指定的操作。
  • auditallow:表示允许操作并记录访问决策信息。
  • dontaudit:表示不记录违反规则的决策信息,且违反规则不影响运行。

(1)通用AV规则语法

虽然这些规则的用途不一样,但它们的基本语法是一样的,每个规则都包含了下面5个元素:

  • 规则名称

allow,dontaudit,auditallow和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; # 这才是我们真正想要的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/159173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三、Keil安装芯片包、下载固件库、建立STM32工程模板

目录 一、首先在Keil软件上安装好芯片包 二、下载官方固件库 三、建立基于固件库的Keil5工程模板 一、首先在Keil软件上安装好芯片包 STM32有很多系列的芯片,我们平常用的最多的是STM32F1系列的,因此安装F1系列的芯片包在我们初学时,只按照…

Mybatis Plus—数据安全保护、批量操作

一、数据安全保护 该功能为了保护数据库配置及数据安全,在一定的程度上控制开发人员流动导致敏感信息泄露。 3.3.2 开始支持配置安全 YML 配置: // 加密配置 mpw: 开头紧接加密内容( 非数据库配置专用 YML 中其它配置也是可以使用的 &…

设计模式系列:三、责任链设计模式

一、概述 责任链模式是一种行为设计模式,它允许多个对象处理一个请求,从而避免了请求的发送者和接收者之间的耦合关系。 优点是把任务划分为一个一个的节点,然后按照节点之间的业务要求、顺序,把一个个节点串联起来,…

如何使用浏览器自动化框架Playwright开发“万媒易发”实现多平台自动发布文章?

作为一名程序员和开发者,我深知在多个媒体平台手动发布和管理文章的痛苦。因此,我决定使用Playwright浏览器自动化框架,开发一款名为“万媒易发”的工具,实现多平台自动发布文章。下面我将分享这款工具的开发过程和成果&#xff0…

浅析教学型数控车床使用案例

教学型数控车床是一种专为教学和培训设计的机床,它具有小型化、高精度和灵活性的特点,可以作为学校和技术学院的培训机器。下面是一个使用案例,以展示教学型数控车床在教学实训中的应用。 案例背景: 某职业技术学院的机械工程专业…

H5ke11--4java分发多servlet--用来把选课系统加快-含源代码

前言: java有两个cookie, 举例子:充电桩计费在serversocket 客户端socket[ 我怎么知道有没有东西传进来,就是端口 首先我客户端发送我的ip,然后serversocket进行监听客户端唻的 那我serversocket维护着一个队列,serversocket有个阈值啊超出进行排队 代码详解: 1首先getParamet…

Socket通信之网络协议基本原理

一台机器将自己想要表达的内容,按照某种约定好的格式发送出去,当另外一台机器收到这些信息后,也能够按照约定好的格式解析出来,从而准确、可靠地获得发送方想要表达的内容。这种约定好的格式就是网络协议(Networking P…

VR全景航拍要注意什么,航拍图片如何处理

引言: VR全景航拍技术是当前摄影和航拍领域的新潮流。它采用虚拟现实技术,通过360度全景镜头捕捉画面,可以为观众提供身临其境的视觉体验。在宣传展示中,利用VR全景航拍技术可以为品牌宣传带来更加生动、震撼的视觉效果。 一、航拍注意事项 …

【追求卓越01】数据结构--数组

引导 这一章节开始,正式进入数据结构与算法的学习过程中。由简到难,先开始学习最基础的数据结构--数组。 我相信对于数组,大家肯定是不陌生,因为数组在大多数的语言中都有,也是大家在编程中常常会接触到的。我不会说数…

WebP 相对于 PNG、JPG 有什么优势?

新的东西,还没有普及,但绝大多数浏览器已兼容了 WebP 是一种由 Google 开发的图像格式,相比于 PNG 和 JPG 格式有以下几个优势: 更小的文件大小:相同质量下,WebP 格式的文件大小比 PNG 和 JPG 格式都要小得…

蝶恋花

《蝶恋花》 作家/罗光记 华灯初上,夜色阑珊,轻风微起,落英缤纷。正是春意盎然之时,蝴蝶翩翩起舞,花间留恋。此情此景,不禁令人感叹:“蝶恋花,花恋蝶,人间至…

《数据仓库入门实践》

前言: 1、问什么要写这篇博客? 随着自己在数仓岗位工作的年限增加,对数仓的理解和认知也在发生着变化 所有用这篇博客来记录工作中用到的知识点与经验 2、这篇博客主要记录了那些内容? 在日常工作中,发现刚接触不久数仓…

jQuery实现横版手风琴效果

一、实现效果 当鼠标滑过方块的时候&#xff0c;方块的状态就会发生如下图所示的变化&#xff0c;同理当鼠标滑到其他的方块也会发生同样的效果&#xff0c;不仅大小会改变同时方块的颜色也会跟着发生变化&#xff1a; 二、代码实现 <!DOCTYPE html> <html><h…

opencv-python读取的图像分辨率太大不能完全显示

如果使用OpenCV-Python读取的图像分辨率太大&#xff0c;无法完全显示在屏幕上&#xff0c;可以考虑以下几种方法&#xff1a; 1.缩放图像&#xff1a;使用OpenCV的resize函数&#xff0c;将图像缩小到适合屏幕显示的大小。例如&#xff0c;可以将图像的宽度和高度都缩小到屏幕…

笔记58:Encoder-Decoder 架构

本地笔记地址&#xff1a;D:\work_file\&#xff08;4&#xff09;DeepLearning_Learning\03_个人笔记\3.循环神经网络\第9章&#xff1a;动手学深度学习~现代循环神经网络 a a a a a a a a a

121. 买卖股票的最佳时机 --力扣 --JAVA

题目 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利…

SpringBoot 导入其他配置文件

默认情况下&#xff0c;springboot 初始的项目中都有一个 application.yml 或者 application.properties 文件&#xff0c;如果我们希望再定义一个独立的配置文件用来配置特定业务数据&#xff0c;而不希望把这些配置内容都堆积在 application 配置文件中&#xff0c;实现这个需…

python命令行交互 引导用户选择宠物

代码 以下代码将在命令行中&#xff0c;引导用户选择一个或者多个宠物&#xff0c;并反馈用户选择的宠物 # -*- coding:UTF-8 -*- """ author: dyy contact: douyaoyuan126.com time: 2023/11/22 15:19 file: 在命令行中引导用户选择宠物.py desc: xxxxxx &qu…

蓝桥等考C++组别七级007

第一部分:选择题 1、C++ L7 (15分) 执行以下程序后,输出结果是( )。 int a = 5; int b = a++; cout << a << " " << b; A. 5 5 B. 5 6 C. 6 5 D. 6 6 正确答案:C

好题分享(2023.11.12——2023.11.18)

目录 ​ 前情回顾&#xff1a; 前言&#xff1a; 题目一&#xff1a;《有效括号》 思路&#xff1a; 总结&#xff1a; 题目二&#xff1a;《用队列实现栈》 思路&#xff1a; 总结&#xff1a; 题目三&#xff1a;《用栈实现队列》 思路&#xff1a; 总结 &#x…