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

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

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

3. 访问向量规则

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

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

1)通用AV规则语法

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

  • 规则名称

allow,dontaudit,auditallow和neverallow。

  • 源类型

授予访问的类型,通常是进程尝试访问的域类型。

  • 目标类型

客体的类型,其被授权可以访问源类型。

  • 客体类别

客体的类别。

  • 许可

表示主体对客体访问时允许的操作类型(也叫做访问向量)。

7)AV规则中的特殊许可操作符

对于列在AV规则中的许可,可以使用两个特殊的操作符

第一个特殊操作符是通配符(*)通配符包括了客体类别的所有许可

allow user_t bin_t : { file dir } *;

这条规则扩大后将包括file和dir的所有许可。

通配符语法与列出所有的许可点有些不同。使用通配符时,许可包括每个客体类别的许可,此时不会考虑其中一个许可对另一个客体类别是否有效,这样就可以在规则中使用多个客体类别了,即使这些客体类别有不同的许可。因此,上面这条规则就安全地处理了许可。这里只对dir客体类别有效的规则不会影响到file客体类别。

第二个特殊操作符是求补操作符(~),即除了列出的许可外,其它的许可都包括,如:

allow user_t bin_t : file ~{ write setattr ioctl };

编译时,这条规则允许所有的许可,除了write、setattr和ioctl外。与通配符类似,求补运算操作符也扩大了客体类别的许可列表。

警告:建议正确地使用这些特殊操作符(非,通配符和求补操作符)。过去几年,它们也在不断向前发展,并且也发生了一些变化,checkpolicy版本不同,对这些特殊操作符的使用也不同。

最近对编译器的改进又严格限制了这些操作符的使用,主要的例外是允许在neverallow规则中使用通配符匹配所有类型,但其它TE规则中不能使用。

通用访问向量规则语法

再次回顾一下,完整的AV规则通用语法如下:

规则名称 (源)类型集 (目标)类型集 : 类别集 许可集

  • 规则名称

访问向量规则的名称,有效的规则名称是allow、auditallow、auditdeny和neverallow。

  • 类型集

一个或多个类型和(或)属性,规则中源和目标类型。规则中源和目标类型有其独立的类型集,多个类型集或属性使用空格进行分隔,并使用大括号将它们括起来,如{bin_t sbin_t}。可以使用(-)来排除类型,如{exec_type -sbin_t}。在目标类型区域也可以使用关键字self,但在源类型区域不能使用。neverallow规则也支持通配符来代表所有的类型,求补运算操作符(~)也表示所有的类型,除了明确列出的之外。

  • 类别集

一个或多个客体类别,多个客体类别必须使用大括号括起来,如{file lnk_file}。

  • 许可集

一个或多个许可,所有许可对类别集列出的所有客体都要有效,多个许可必须用大括号括起来,如{read create}。通配符(*)指出所有客体类别的所有许可,求补操作符(~)用于指出所有的许可,除了明确列出的之外。

所有AV规则在单个策略、基础载入模块和非基础载入模块中都有效所有AV规则除了auditdeny、neverallow规则外,其它的在条件语句中也有效

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

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

相关文章

数据库管理变更工具

Bytebase 是一个开源的数据库管理工具,旨在简化团队协作和版本控制数据库架构和数据的过程。它提供了以下主要功能: 1. 数据库架构管理:Bytebase 允许用户创建和管理数据库架构,并支持版本控制,使团队成员可以协同编辑…

单链表相关面试题--5.合并有序链表

5.合并有序链表 21. 合并两个有序链表 - 力扣(LeetCode) /* 解题思路: 此题可以先创建一个空链表,然后依次从两个有序链表中选取最小的进行尾插操作进行合并。 */ typedef struct ListNode Node; struct ListNode* mergeTwoList…

【对象的深层拷贝】

工具函数 export function deepCloneWithReactivity(obj) {if (!obj && typeof obj ! object) {throw new Error(error arguments, deepClone);}const objClone Array.isArray(obj) ? [] : {};if (obj && typeof obj object) {for (const key in obj) {if …

使用 API 管理平台的 5 大理由

组织需要治理和控制API生态系统,这种治理就是API管理的作用。 Uber 使用 API​​(应用程序编程接口)与 Google Maps 和 Twilio 等第三方服务连接,这有助于改善用户体验; Salesforce 提供 API,允许开发人员…

redis的性能管理

查看内存使用指标 查看内存使用指标 info memory used_memory:1800800 redis中主句占用的内存 used_memory_rss:5783552 redis向操作系统申请的内存 used_memory_peak:1800800使用内存的峰值 系统巡检:硬件巡检,数据库,nginx redis docke…

虚函数可不可以重载为内联 —— 在开启最大优化时gcc、clang和msvc的表现

下面是对该问题的一种常见回答: 首先,内联是程序员对编译器的一种建议,因此可以在在重载虚函数时在声明处加上inline关键字来修饰, 但是因为虚函数在运行时通过虚函数表,而内联函数在编译时进行代码嵌入,因…

Linux wait函数用法

wait 函数是用于等待子进程结束并获取子进程的终止状态的系统调用。它在父进程中使用,用于等待其子进程终止并获得子进程的退出状态。 函数原型: pid_t wait(int *status);status 是一个指向整型的指针,用于存储子进程终止时的退出状态&…

redis的集群

高可用方案 1、持久化 2、高可用 主从复制 哨兵模式 集群 主从复制: 主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用 主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器…

RFID读写器在物联网中的应用与优势

随着物联网技术的不断发展,RFID读写器作为物联网感知层的重要组成部分,在各个领域得到了广泛应用。本文将介绍RFID读写器在物联网中的应用及优势。 一、RFID读写器概述 RFID(Radio Frequency Identification)技术是一种利用无线…

机器学习中的特征选择:方法和 Python 示例

布拉加德什桑达拉拉詹 一、说明 特征选择是机器学习流程中至关重要且经常被低估的步骤。它涉及从数据集中的原始特征集中选择最相关的特征(输入变量或属性)的子集。特征选择的重要性怎么强调都不为过,因为它直接影响机器学习模型的质量、效率…

Python遍历某一文件夹下的所有txt文件,并将这些txt文件的内容写到一个新的txt文件中

写在前面:最近在某视频网站学习java,视频中老师将所有知识点写在了当天代码文件夹下的txt文件中,我每天早晨复习的时候,要打开n多个目录才能找到要复习的全部内容,不胜其烦,因此写下此代码,将整…

【SA8295P 源码分析】129 - GMSL2 协议分析 之 Video Frame 帧数据结构分析 PCLK 计算公式

【SA8295P 源码分析】129 - GMSL2 协议分析 之 Video Frame 帧数据结构分析 & PCLK 计算公式 一、GMSL2 Video Frame 数据分析1.1 视频帧数据结构组成1.2 PCLK 计算公式二、GMSL2 协议 Video 数据带宽计算三、双加载模式 Double Loading Mode四、零填充模式 Zero-Padding M…

leetcode 240. 搜索二维矩阵 II

2023.11.22 本题最先想到的是暴力法和二分法,暴力法就不写了,写一下二分法的解法,java代码如下: class Solution {public boolean searchMatrix(int[][] matrix, int target) {for(int[] row : matrix){int left 0;int right r…

网站首页布局设计模板推荐给你这个8款!

想要设计一个有品质的网站首页,一款好的网站首页布局设计模板是不可或缺的。然而,网站首页布局设计模板市场上的品质千差万别,要花费大量时间和精力寻找合适的模板。于是,本篇文章将介绍免费获取网站首页布局设计模板的步骤&#…

Moonbeam Network已上线原生USDC稳定币

原生USDC已经通过XCM从波卡来到了Moonbeam,该如何利用?此次集成通过把热门的Circle稳定币带来波卡生态,连接了区块链世界与传统金融。现在,用户和开发者可以在Moonbeam网络中踏寻USDC的强大之处。 Moonbeam生态中的Moonwell、FiD…

【容器化】Kubernetes(k8s)

文章目录 概述Docker 的管理痛点什么是 K8s云架构 & 云原生 架构核心组件K8s 的服务注册与发现组件调用流程部署单机版部署主从版本Operator来源拓展阅读 概述 Docker 虽好用,但面对强大的集群,成千上万的容器,突然感觉不香了。 这时候就…

消息中间件——RabbitMQ(四)命令行与管控台的基本操作!

前言 在前面的文章中我们介绍过RabbitMQ的搭建:RabbitMQ的安装过以及各大主流消息中间件的对比:,本章就主要来介绍下我们之前安装的管控台是如何使用以及如何通过命令行进行操作。 1. 命令行操作 1.1 基础服务的命令操作 rabbitmqctl sto…

验收材料-软件质量保证措施

一、 质量保障措施 二、 项目质量管理保障措施 (一) 资深的质量经理与质保组 (二) 全程参与的质量经理 (三) 合理的质量控制流程 1. 质量管理规范: 2. 加强协调管理&…

模块计算机类型“x64”与目标计算机类型“x86”冲突

在使用DDS过程中,nddscpp2.lib(nddscpp2.dll) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“x86”冲突。 问题原因为lib库为64位,而编译器选择的是32位。

Uniapp从零开始,手把手教学(附精选源码32套,涵盖商城团购等)

一、介绍 如果是刚入门小程序的,又或者刚听到这个名词的人,可能跟我之前一样,带着诸多的疑惑。比如: 什么是uniapp?它和原生微信小程序有什么异同之处? 为什么推荐uniapp开发? 这里一句话两…