SELinux零知识学习十、SELinux策略语言之客体类别和许可(4)
接前一篇文章:SELinux零知识学习九、SELinux策略语言之客体类别和许可(3)
一、SELinux策略语言之客体类别和许可
3. 有效的客体类别
本节对Fedora Core 4(FC4)可用的内核客体类别做一个概述,目标是描述客体类别以及系统资源是如何映射到这些客体类别的。
编写一个良好的策略最困难的部分是理解客体类别和许可的语义、以及特定系统上应用程序上下文中那些语义的含义。
FC 4系统有超过40个内核客体类别,它们代表了内核提供的所有资源。客体类别的数量说明了一个基本原理,在SELinux中代表尽可能完整准确的内核资源。Linux涉及的范围广泛且非常复杂,这就决定了客体类别肯定也是极其多且复杂的,复杂得让人畏缩,但要取得SELinux的灵活性,完全解决Linux面临的安全挑战,这是必需的。
为了易于理解,我们将内核客体类别分解成了四种:文件相关的、网络相关的、System V IPC和杂项。
(1)与文件相关的客体类别
第一种客体类别是那些与文件及其它存储在文件系统中的资源有关的,这是大多数用户最熟悉的客体类别了,它包括了所有的与持续不变的、在磁盘上的文件系统和在内存中的文件系统,如proc和sysfs结合在一起的客体类别。
在UNIX系统中,一个底层的概念是“一切皆文件”,大多数情况下,这么说是对的,但是它隐藏了一个事实,就是并非所有的文件都是相同的。实际上,现代类UNIX系统,如Linux专门为设备、IPC以及标准的存储数据的文件设计了专用的文件。SELinux详细准确地表现了内核的视图。下表总结了与文件有关的客体类别:
客体类别 | 描述 |
blk_file | 块文件 |
chr_file | 字符文件 |
dir | 目录 |
fd | 文件描述符 |
fifo_file | 命名管道 |
file | 普通文件 |
filesystem | 文件系统(如一个真实的分区) |
lnk_file | 符号链接 |
sock_file | UNIX域套接字 |
- file和dir
客体类别file和dir分别代表普通文件和目录。普通文件就是那些存储数据的文件,它们是大多数系统上最常见的客体了;目录在Linux中也是一个特定的文件,它是独一无二的,因为它们可能还包含其它客体。
- lnk_file
客体类别lnk_file代表符号链接。大多数情况下,它非常重要,能够区别普通文件和符号链接,这样可以预防常见的攻击。恶意进程和用户可以创建符号链接,这样可能引起某个进程访问或修改本不是它们打算要访问或修改的文件。独立的lnk_file客体类别允许编写预防这些攻击类型的策略。
- fifo_file和sock_file
客体类别fifo_file和sock_file表示用于IPC的特定文件。fifo_file客体类别代表fifo文件,也叫做命名管道;sock_file客体类别联合UNIX域套接字控制创建、访问等与文件有关的客体的能力。
- chr_file和blk_file
客体类别chr_file和blk_file分别表示字符设备和块设备。在Linux中,设备通常是通过在/dev/目录下的特定文件来进行访问的,这些文件通过主/次设备号表示字符和块设备。字符设备是程序以字节流形式读取或写入数据的设备,块设备是将数据以更大块进行传递的设备。
- fd和filesystem
最后两个客体类别是文件描述符和文件系统。它们不是典型的Linux客体,filesystem客体类别表示挂载的文件系统,这个客体类别控制全局操作如挂载或查询限额。例如:使用filesystem客体类别,我们可以只运行挂载支持存储安全上下文的文件系统。所有特定类型的文件系统(如ext3)在策略中都使用相同的fs_use语句获取默认的标记定义。文件描述符表示打开的与文件有关的客体,存在于进程中,即使与文件有关的客体明显不同,它们表示内核数据结构,通常认为文件描述符是文件有关的客体的基础。的确,标准Linux访问控制不能单独在文件描述符上提供访问控制,这种策略忽略了文件描述符是可以在进程之间传递的资源的事实。通常,子进程会从父进程哪里集继承文件描述符,这个继承并不总是有利的,许多Linux编程指南中都警告最好减少文件描述符继承,特别是后台进程。为了标识此问题及其它问题,我们以fd客体类别为例。在SELinux中,fd代表文件描述符,使用这个客体类别阻止文件描述符在进程间传递或继承就成为可能。值得注意的是,有权使用文件描述符并不意味着就可以访问与文件有关的客体,进程必须对这些文件也要有访问许可才行。
相关文章:

SELinux零知识学习十、SELinux策略语言之客体类别和许可(4)
接前一篇文章:SELinux零知识学习九、SELinux策略语言之客体类别和许可(3) 一、SELinux策略语言之客体类别和许可 3. 有效的客体类别 本节对Fedora Core 4(FC4)可用的内核客体类别做一个概述,目标是描述客…...

String字符串性能优化的几种方案
原创/朱季谦 String字符串是系统里最常用的类型之一,在系统中占据了很大的内存,因此,高效地使用字符串,对系统的性能有较好的提升。 针对字符串的优化,我在工作与学习过程总结了以下三种方案作分享: 一.优…...

微服务基础,分布式核心,常见微服务框架,SpringCloud概述,搭建SpringCloud微服务项目详细步骤,含源代码
微服务基础 系统架构的演变 随着会联网的发展,网站应用的规模不断扩大,常规的应用架构已经无法应对,分布式服务架构以及微服务架构势在必行,必须一个治理系统确保架构有条不紊的演进 单体应用框架 Web应用程序发展的早期&…...

【第2章 Node.js基础】2.7 Node.js 的流(一) 可读流
🌈 Node.js 的流 🚀什么是流 流不是 Node.js 特有的概念。它们是几十年前在 Unix 操作系统中引入的。 我们可以把流看作这些数据的集合,就像液体一样,我们先把这些液体保存在一个容器里(流的内部缓冲区 BufferList&…...

Ubuntu/Debian Hat 系 Linux 使用
目录 1. Ubuntu/Debian Hat 系 Linux 使用1.1. 包1.1.1. Install Package1.1.2. Convert .rpm package to .deb1.1.3. Install RPM Package Directly Onto the System on Ubuntu 1. Ubuntu/Debian Hat 系 Linux 使用 1.1. 包 1.1.1. Install Package dpkg -i <name of pa…...

php接口api数据签名及验签
api数据签名作用:通过使用签名可以验证数据在传输过程中是否被篡改或修改。接收方可以使用相同的签名算法和密钥对接收到的数据进行验证,如果验证失败则表明数据被篡改过 1、数据发送方进行接口签名并传输签名字段 <?php // 请求URL $url "h…...

实战:给docusaurus文档网站配置Algolia 实现全站内容搜索功能-2023.11.16(已解决)
更新于:2023年11月16日 次文档已全部脱敏! 实战:给docusaurus文档网站配置Algolia 实现全站内容搜索功能-2023.11.16(已解决) 目录 前提条件 🍀 前提条件 具备docker环境 具有自己的网站 🍀 实验软件(…...

Ubuntu18.04安装ROS系统+turtle测试
安装 1.设置安装源 sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list sudo sh -c . /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubun…...

UE基础篇五:动画
导语: 视频文档在文末 一、动画 1.1 物理资产可以用来做布娃娃系统 1.2 混合空间 调整这个值会在动画切换时有一个插值时间,表现为等一下再切 1.3 启用根运动 1.4 一些导入设置只有在导入时才有效, 1.5 动画图标可以预览调节数值<...

SELinux零知识学习十二、SELinux策略语言之客体类别和许可(6)
接前一篇文章:SELinux零知识学习十一、SELinux策略语言之客体类别和许可(5) 一、SELinux策略语言之客体类别和许可 3. 有效的客体类别 (3)System V IPC客体队列 与IPC有关的客体类别代表System V IPC资源。下表总结…...

vscode的git 工具使用
vscode的git 工具使用 目录概述需求: 设计思路实现思路分析1.git 工具的使用2.提交代码3.查看历史提交代码 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a be…...

利用回溯绕过正则表达式
目录 利用strpos的特性拿到flag 利用回溯绕过正则表达式 利用回溯次数绕过正则表达式并且实现文件上传 使用回溯绕过正则表达式waf拿到flag 本篇会讲解三个实验来分别绕过正则表达式,python的正则表达式和Javascript的正则表达式大致相同如果有正则表达式不太懂…...

Flutter执行flutter doctor报错HTTP Host Availability
问题描述 [!] HTTP Host Availability✗ HTTP host https://maven.google.com/ is not reachable. Reason: An erroroccurred while checking the HTTP host: Operation timed out解决方案 将文件flutter/packages/flutter_tools/lib/src/http_host_validator.dart中的https:…...

全栈工程师必须要掌握的前端Html技能
作为一名全栈工程师,在日常的工作中,可能更侧重于后端开发,如:C#,Java,SQL ,Python等,对前端的知识则不太精通。在一些比较完善的公司或者项目中,一般会搭配前端工程师&a…...

腾讯云服务器租用价格,腾讯云服务器租用价格多少钱一年?
腾讯云服务器租用价格,腾讯云服务器租用价格多少钱一年?腾讯云服务器有优惠活动,现在租用只需要88元/年!腾讯云服务器优惠购买入口:https://1111.mian100.cn 随着互联网的发展,越来越多的人开始选择将自己…...

QTableWidget 设置列宽行高大小的几种方式及其他常用属性设置
目录 效果: 1.列宽、行高自动分配 2.固定值 3.随内容分配列宽 随内容分配行高 4.水平方向标签拓展剩下的窗口部分,填满表格 5.列宽是自动分配的,但是第一列可手动调整宽度,而表格整体的列宽仍是自动分配的。第二、三列办法调…...

【AI视野·今日CV 计算机视觉论文速览 第277期】Fri, 27 Oct 2023
AI视野今日CS.CV 计算机视觉论文速览 Fri, 27 Oct 2023 Totally 93 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers A Coarse-to-Fine Pseudo-Labeling (C2FPL) Framework for Unsupervised Video Anomaly Detection Authors Anas Al lahham…...

【教3妹学编程-算法题】购买物品的最大开销
3妹:2哥,听说你今天发工资啦? 请我吃饭怎么样,嘿嘿 2哥 : 切,你上周还发工资了呢,也没见你请我吃饭。 3妹:哎呀, 我的工资都用来双11 shopping了, 双11过后我都吃了1周土…...

关于pandas dataframe数据转换为JSON格式存储在Redis后,读取数据时发生数据篡改的问题以及解决办法
问题:当时处理股票数据,获取到以dataframe数据结构的股票,由于Redis 是一个内存中的数据结构存储系统,但是不接受dataframe数据结构的数据,选择将其先转化为JSON格式,但发现再将JSON格式转化为原数据时&…...

Go 语言编译环境
1. 请简要介绍一下Go语言的特点。 Go语言是一种静态类型、编译型语言,由Google开发。它的主要特点包括: 简洁高效:Go语言的语法非常简洁,易于学习和使用。同时,Go语言的执行效率高,适合开发高性能的后端服…...

Leetcode刷题详解——衣橱整理
1. 题目链接:LCR 130. 衣橱整理 2. 题目描述: 家居整理师将待整理衣橱划分为 m x n 的二维矩阵 grid,其中 grid[i][j] 代表一个需要整理的格子。整理师自 grid[0][0] 开始 逐行逐列 地整理每个格子。 整理规则为:在整理过程中&am…...

短视频ai剪辑分发账号矩阵系统(招商oem)----源头技术开发
短视频ai剪辑分发账号矩阵系统 1. 视频剪辑工具——原创短视频一键生成,视频剪辑亮点分析 (1)多模式智能剪辑 包含智能混剪逻辑、智能组合、场景顺序、图片生成视频等多种模式。在视频创作上也做了简化,即使是没有剪辑能力的创…...

Ubuntu18.04安装Loam保姆级教程
系统环境:Ubuntu18.04.6 LTS 1.Loam的安装前要求: 1.1 ROS安装:参考我的另一篇博客 Ubuntu18.04安装ROS-melodic保姆级教程_灬杨三岁灬的博客-CSDN博客还是那句话,有时候加了这行也不好使,我是疯狂试了20次…...

Rust 语言中的结构体
目录 1、结构体 2、结构体的定义和实例化 2.1 使用字段初始化简写语法 2.2 使用结构体更新语法从其他实例创建实例 2.3 没有命名字段的元组结构体 2.4 没有任何字段的类单元结构体 2.5 结构体示例程序 3、方法 3.1 关联函数 3.2 多个 impl 块 1、结构体 struct&…...

Unity开发之C#基础-异常处理(Try Catch)
前言 其实本来这章应该将栈和队列的 但是后来想想 栈和队列在实际应用很少跟多的是大家了解一下栈和队列的基本常识比如先进先出的是谁后进先出的是谁这种 csdn有很多介绍栈和队列的文章 我觉得都比我理解深刻所以大家可以去搜索参照一下 今天我们继续往下讲解 如何自己主动的…...

Epoxy:跨不同数据存储的 ACID 事务
Epoxy 利用 Postgres 事务数据库作为主数据库/协调数据库,并扩展多版本并发控制 (MVCC) 以实现跨数据存储隔离。它通过乐观并发控制 (OCC) 和两阶段提交 (2PC) 协议提供隔离性以及原子性和持久性。 环氧树脂被用作五种不同数据存储的接口层:Postgres, M…...

鸿蒙:从0到“Hello Harmony”
效果展示 一.概述 明年华为鸿蒙就不再兼容Android生态了,作为拥有7亿终端用户的华为,建立自己的生态也是理所当然。 所以对HarmonyOS的研究也是众多开发者绕不开的坎了。 今天这篇博文主要实现一个“Hello Harmony!”的Demo。 二.官方链接…...

istio安装文档
1、重装命令 istioctl manifest generate --set profiledemo | kubectl delete --ignore-not-foundtrue -f - 2、下载 参考:02、istio部署到k8s中 - 简书 (jianshu.com) 参考 Istio / 入门 curl -L https://istio.io/downloadIstio | ISTIO_VERSION1.20.0 TAR…...

修改CentOS默认mail发件人名称
修改CentOS默认mail发件人名称 在CentOS中,可以通过修改邮件发送配置文件来修改默认的邮件发件人名称。以下是一些步骤,您可以根据您的实际情况进行修改: 打开终端或SSH连接到CentOS服务器。使用文本编辑器(如vi或nano࿰…...

Trigger替换Demo
maven工程 pom依赖 <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.1</version> </dependency> import org.quartz.Job; import org.quartz.JobExecutionContext; imp…...