SELinux(一) 简介

news2024/12/23 0:11:32
  • 首发公号:Rand_cs

前段时间的工作遇到了一些关于 SELinux 的问题,初次接触不熟悉此概念,导致当时配置策略时束手束脚,焦头烂额,为此去系统的学习了下 SELinux 的东西。聊 SELinux 之前,先来看看什么叫做访问控制。

访问控制模型简介

请添加图片描述

从上图可知,一个访问控制模型包括四个部分:

  1. Subject,主体:访问的发起者,通常就是进程
  2. Object,客体:被访问的对象,一般是操作系统所管理的资源,最常见的就是文件
  3. Rules DB,规则库/策略:定义了主体客体的属性以及主体对客体的访问规则
  4. RVM:操作系统内实现的验证机制,上述访问控制策略的执行者,在访问操作过程中根据规则库判断当前操作是否合法

DAC 简介

DAC(Discretionary Access Control),自主访问控制机制,名字听着很陌生,但你一定很熟悉,就是 Linux 下那套常见的 ugo、rwx 规则。

DAC 主要思想是用户(UID)作为资源的拥有者,用户可以决定自身资源的所有访问权限,此用户执行的所有程序也默认拥有同样的权限。 DAC 只起到了用户隔离的作用,所有 DAC 机制都有一个共同的弱点,即无法识别自然人与计算机程序之间最基本的区别。如果一个用户被授权允许访问某资源,则意味着此用户执行的所有程序都被授权访问。

However,用户(或者说用户登录的 shell 进程)是可信的绝不等于用户执行的程序(shell fork 出来的子进程)也是可信的。是程序便可能有漏洞,有漏洞便可能被利用,一旦被攻击植入代码,黑客便可以获取该用户在系统上所有的权力。

另外 DAC 对于权力(root,non-root)的划分、权限(r, w, x)的划分都不够细致,粒度过大,不符合最小权限原则。

最小权限原则是指每个程序和系统用户都应该具有完成任务所必需的最小权限集合,在计算机科学以及其它领域中,它要求计算环境中的特定抽象层的每个模块(如进程、用户或者计算机程序等)只能访问当下所必需的信息或者资源

SELinux 简介

为此,便有了 MAC(Mandatory Access Control),强制访问控制机制,而 SELinux(Security-Enhanced Linux)便是其中一种,用于在 Linux 操作系统上提供高度的安全性保护。

SELinux 可以解决 DAC 存在的问题,其最根本的改变在于,资源的拥有者不再决定资源的访问权限,被限制的基本单位从用户变为了进程。

MAC 的基本原理是通过给每个主体(进程)客体(文件等)分配一个安全上下文(安全标签、标签),然后制定策略来限制标签之间的访问,也就限制了主体对客体的访问。这是以一种白名单的方式开放权限,意味着我们需要明确地规定哪些操作是被允许的,而其他所有的操作都将被拒绝。

现在 SELinux 被广泛用于 Android 系统,Android 启动的第二阶段便是初始化 SELinux 子系统。一般的 Linux 发行版没有使能 SELinux,需要安装相关库、策略文件并修改启动参数来使能 SELinux。比如说 ubuntu 并没有使能 SELinux,ubuntu 默认使用另外一种 MAC:Apparmor

SELinux 访问控制示例

此小节简单给出一个 SELinux 的访问控制示例,好亲身感受一下 SELinux 到底是如何限制访问的。SELinux 本身又分了多种访问控制模型,本文作为开篇,先简单介绍其中最常用的一种模型:TE(Type Enforcement) 模型。

假设现在有进程 a、b,有文件 x、y,它们的类型如下所示:

a -- proc_a_t
x -- file_x_t

策略文件如下所示:

allow proc_a_t file_x_t : file read;
// allow subject object : class { perms };

上述语句的意思是:proc_a_t 类型的进程对类型为 file_x_t 的文件有读权限。SELinux 的策略为白名单机制,意思是说,proc_a_t 对于 file_x_t 类型的文件只有读权限,没有其他权限,想要有其他权限,必须额外添加策略

SELinux 策略有专属的语法,上面的 allow 语句便是其中一种,也是用的最多的一条语句,其语法为 allow subject_t object_t : class { perms };

  • allow 表示后面的 主体对客体的访问方式为允许
  • subject_t 表示主体的类型,比如上述例子中进程的类型:proc_a_t
  • object_t 表示客体的类型,比如说上述例子中文件的类型:file_x_t
  • class 表示客体类别,SELinux 中对客体进行了分类,常见的有文件、目录等
  • perms 表示权限集合,在 allow 语句中表示将要授予的权限,不同的客体类别有着不同的权限集合,比如说文件客体有读写权限,目录客体有搜索权限等等

好了,本文就只是先做个简单介绍,后面再继续,有什么问题欢迎来讨论交流。

  • 首发公号:Rand_cs

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

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

相关文章

操作系统导论:生产者消费者

1. 全文摘自《操作系统导论》 写的挺好,就摘录下来 2. 生产者消费者问题

【论文复现】RoSteALS: Robust Steganography using Autoencoder Latent Space-2023-CVPR

代码链接:https://github.com/TuBui/RoSteALS 一定要按照dockerfile,requirements.txt和requirements2.txt配置环境 需要补充的库: pip安装:omegaconf slack slackclient bchlib (0.14.0版本) einops imagenet-c conda安装&…

0-1背包的初始化问题

题目链接 这道题的状态转移方程比较易于确定。dp[i][j]表示能放前i个物品的情况下,容量为j时能放物品的数量(这道题歌曲数量对应物品数量,容量对应时间)。 技巧(收获) 二维dp数组可以视情况优化为一维dp数组…

Linux命令中的符号

目录 1 管道符 | 1.1 | grep [要检索的东西] 1.2 echo | tee 2 重定向 2.1 输出重定向覆盖 > 2.2 输出重定向添加 >> 2.3 文件输入重定向 < 2.4 多行文本输入重定向 << 2.5 常用搭配 2.5.1 终端不显示 > /dev/null 1 管道符 | 我们…

springboot3.2 整合 mybatis-plus

springboot3.2 整合 mybatis-plus springboot3.2 正式发布了 迫不及待地的感受了一下 结果在整个mybatis-plus 的时候遇到了如下报错 java.lang.IllegalArgumentException: Invalid value type for attribute factoryBeanObjectType: java.lang.String. ____ _ …

中小型工厂如何进行数字化转型

随着科技的快速发展和市场竞争的日益激烈&#xff0c;中小型工厂面临着诸多挑战。为了提高生产效率、降低成本、优化资源配置&#xff0c;数字化转型已成为中小型工厂发展的必经之路。中小型工厂如何进行数字化转型呢&#xff1f; 一、明确数字化转型目标 在进行数字化转型之前…

YOLO改进系列之SKNet注意力机制

摘要 视皮层神经元的感受野大小受刺激的调节即对于不同的刺激&#xff0c;卷积核的大小应该不同&#xff0c;但在构建CNN时一般在同一层只采用一种卷积核&#xff0c;很少考虑因采用不同卷积核。于是SKNet被提出&#xff0c;在SKNet中&#xff0c;不同大小的感受视野&#xff…

智安网络|探索云安全合规要求:等保2.0时代的新趋势解析

随着信息技术的不断发展和应用的广泛普及&#xff0c;信息安全问题日益凸显&#xff0c;特别是在云计算时代&#xff0c;企业对于云平台的安全保障需求更为迫切。等级保护&#xff08;等保&#xff09;作为我国信息安全的基本要求&#xff0c;已经进入了2.0时代&#xff0c;对于…

【古月居《ros入门21讲》学习笔记】17_launch启动文件的使用方法

目录 说明&#xff1a; 1. launch文件作用 2. launch文件语法 根元素 参数设置 重映射、嵌套 3. 示例 创建功能包 1_simple.launch 编译 运行 2_turtlesim_parameter_config.launch 启动运行 启动运行显示说明 3_start_tf_demo_c.launch 启动运行 4_start_tf_d…

大地测量乙级资质申请条件

整理一期关于测绘资质大地测量乙级资质的申请要求 测绘资质是由测绘资质主管部门自然资源部制定的 想要了解标准、正规的申请条件&#xff0c;可以到当地省份的政务网搜索测绘资质办理相关标准&#xff08;例如下图&#xff09; 1、通用标准 http://gi.mnr.gov.cn/202106/P02…

1120:最值交换

题目描述 有一个长度为n的整数序列。请写一个程序&#xff0c;先把序列中的最小值与第一个数交换&#xff0c;再把最大值与最后一个数交换。输出转换好的序列。 分别编写两个函数MinIndex()和MaxIndex()来计算最小值下标和最大值下标。 int MinIndex(int a[], int n); //函数返…

鼎捷副总裁谢丽霞:从四大趋势来看,数智时代企业如何加速研发创新

目录 导读 01 研发创新 势不可挡 ① 从逆向设计走向正向设计 ② 从专业协助走向全面协同 ③ 从单点场景走向业务闭环 ④ 从知识管理走向知识工程 02 鼎捷雅典娜 数智驱动企业新未来 03 鼎捷PLM 赋能企业研发创新 导读 研发&#xff0c;企业长青的必备源动能。如何在…

为什么HR和猎头说招不到人:原本base薪资标25k~40k的岗位,面试通过后却只开出16K的薪资...

* 你好&#xff0c;我是前端队长&#xff0c;在职场&#xff0c;玩副业&#xff0c;文末有福利&#xff01; 精彩回顾&#xff1a;国企央企降薪20%&#xff0c;年终奖也没了。 现在的就业市场太激烈了&#xff0c;对于在找工作的人来说&#xff0c;太不友好了。有的朋友辛辛苦苦…

[记录]-共享gpu和专用gpu的区别

如图 据说共享gpu是从系统内存中划分一半出来的&#xff0c;模型训练时要想真的加速训练&#xff0c;只有专用gpu那部分才是起作用的。只有在专用gpu不够用时才会用到共享gpu&#xff0c;共享gpu的速度很慢。

【问题解决!】OSError: [WinError 1455] 页面文件太小,无法完成操作。Error loading “c:\Anaconda3\lib

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 问题描述问题原因二、解决方法 问题描述 在使用pytorch跑深度学习的时候报错OSError: [WinError 1455] 页面文件太小&#xff0c;无法完成操作。Error loading “c…

Head、Neck、Backbone介绍

在深度学习中&#xff0c;通常将模型分为三个部分&#xff1a;backbone、neck 和 head。 Backbone&#xff1a;backbone 是模型的主要组成部分&#xff0c;通常是一个卷积神经网络&#xff08;CNN&#xff09;或残差神经网络&#xff08;ResNet&#xff09;等。backbone 负责…

Echarts-使用渐变色填充

垂直方向的渐变 color: {type: linear,// x0,y1,柱子的颜色在垂直方向渐变x: 0,y: 1,colorStops: [// 0%处的颜色{offset: 0,color: #12c2e9,},// 50%处的颜色{offset: 0.5,color: #c471ed,},// 100%处的颜色{offset: 1,color: #f64f59,},],global: false // 缺省为 false} 水…

Tableau连接到mysql数据库,配置驱动

Tableau想要连接mysql数据库进行数据的可视化&#xff0c;但是没有ODBC驱动&#xff0c;看了几篇文章写的&#xff0c;不是很清楚&#xff0c;顺便写下自己的思路。 1、下载mysql对应的ODBC驱动 首先要知道自己mysql的版本&#xff0c;然后下载对应的ODBC驱动。 MySQL :: Dow…

ground truth 在深度学习任务中代表的是什么意思?

1、概念 在深度学习领域&#xff0c;ground truth (中文意思是“地面真实值”或“基准真实值”&#xff0c;简单理解就是真实值) 是指用于训练和评估模型的准确标签或数据。它是机器学习算法的参考标准&#xff0c;用于衡量模型的性的和判断模型的准确性&#xff0c;本文将介绍…

汽车内饰灯不亮问题修复

车内饰灯不亮问题修复 最近换后座阅读灯火光闪了一下&#xff0c;保险丝短路&#xff0c;导致车内所有灯光&#xff0c;包括前后座阅读灯、后备箱灯都不亮了。 因为是所有灯都不亮&#xff0c;所以排除灯泡问题&#xff0c;网上查了下大概率是保险丝烧了。于是查了自己更换保…