16.5.3 【Linux】SELinux 三种模式的启动、关闭与观察

news/2024/11/17 18:47:56/

并非所有的 Linux distributions 都支持 SELinux 的,所以你必须要先观察一下你的系统版本为何。 目前 SELinux 依据启动与否,共有三种模式,分别如下:

enforcing:强制模式,代表 SELinux 运行中,且已经正确的开始限制 domain/type 了;

permissive:宽容模式:代表 SELinux 运行中,不过仅会有警告讯息并不会实际限制

domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;

disabled:关闭,SELinux 并没有实际运行。

                             图16.5.4、SELinux 的三种类型与实际运行流程图示意

并不是所有的程序都会被 SELinux 所管制,因此最左边会出现一个所谓的“有受限的程序主体”。通过 ps -eZ 去观察有没有受限 (confined )。

在目前 target 这个政策下面,只有第三个类型 (type) 字段会有影响,因此我们上表仅列出第三个字段的数据而已。 我们可以看到, crond 确实是有受限的主体程序,而 bash 因为是本机程序,因此就是不受限 (unconfined_t) 的类型。也就是说, bash 是不需要经过图 16.5.4 的流程,而是直接去判断 rwx 而已。

首先,如果是Disabled 的模式,那么 SELinux 将不会运行,当然受限的程序也不会经过 SELinux , 也是直接去判断 rwx 而已。那如果是宽容 (permissive) 模式呢?这种模式也是不会将主体程序抵挡。

Enforcing 模式,就是实际将受限主体进入规则比对、安全本文比对的流程,若失败,就直接抵挡主体程序的读写行为,并且将他记录下来。 如果通通没问题,这才进入到rwx 权限的判断。

通过getenforce可以知道目前的SELinux模式:

使用sestatus可以知道SELinux的政策:

如上所示,目前是启动的,而且是 Enforcing 模式,而由配置文件查询得知亦为 Enforcing 模式。 此外,目前的默认政策为 targeted 这一个。配置文件是/etc/selinux/config。看看内容:

若有需要修改默认政策的话,就直接改 SELINUX=enforcing。

SELinux 的启动与关闭

上面是默认的政策与启动的模式!你要注意的是,如果改变了政策则需要重新开机;如果由enforcing 或 permissive 改成 disabled ,或由 disabled 改成其他两个,那也必须要重新开机。这是因为 SELinux 是整合到核心里面去的, 你只可以在 SELinux 运行下切换成为强制(enforcing) 或宽容 (permissive) 模式,不能够直接关闭 SELinux 的! 如果刚刚你发现getenforce 出现 disabled 时,请到上述文件修改成为 enforcing 然后重新开机。

如果从 disable 转到启动 SELinux 的模式时, 由于系统必须要针对文件写入安全性本文的信息,因此开机过程会花费不少时间在等待重新写入 SELinux 安全性本文(有时也称为 SELinux Label) ,而且在写完之后还得要再次的重新开机一次。等到下次开机成功后,再使用 getenforce 或 sestatus 来观察看看有否成功的启动到 Enforcing 的模式。

如果你已经在 Enforcing 的模式,但是可能由于一些设置的问题导致 SELinux 让某些服务无法正常的运行, 此时你可以将 Enforcing 的模式改为宽容 (permissive) 的模式,让SELinux 只会警告无法顺利连线的讯息, 而不是直接抵挡主体程序的读取权限。让 SELinux模式在 enforcing 与 permissive 之间切换的方法为:

setenforce 无法在 Disabled 的模式下面进行模式的切换。

在某些特殊的情况下面,你从 Disabled 切换成 Enforcing 之后,竟然有一堆服务无法顺利启动,都会跟你说在 /lib/xxx 里面的数据没有权限读取,所以启动失败。这大多是由于在重新写入 SELinux type (Relabel) 出错之故,使用 Permissive 就没有这个错误。最简单的处理办法就是在Permissive的状态下,使用“ restorecon -Rv / ”重新还原所有SELinux 的类型。


http://www.ppmy.cn/news/1043662.html

相关文章

动手学深度学习--基础知识上篇

🎈动手学deep learning ☁️本专栏会定期更新关于动手学深度学习的每章知识点的讲解,题目答案 👻如果喜欢,欢迎点赞,收藏 动手学深度学习-预备知识篇 线性代数篇 1-3题讲解 证明一个矩阵 A \mathbf{A} A的转置的转置…

服务器安装centos7踩坑

1、制作启动工具 下载iso https://developer.aliyun.com/mirror/?spma2c6h.25603864.0.0.20387abbo2RFbn http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spma2c6h.25603864.0.0.1995f5ad4AhJaW下载 UltraISO https://cn.ultraiso.net/插入u盘启动 到了如图所示页面…

tornado如何在网页模板中显示字典

要在 Tornado 的网页模板中显示字典的键和值,你可以使用 Tornado 内置的模板引擎 tornado.template 来处理。下面是一个简单的示例: 首先,确保你已经安装了 Tornado 模块。你可以使用以下命令进行安装: pip install tornado创建…

信息学奥赛一本通 ybt 1975:【16NOIP普及组】海港 | 洛谷 P2058 [NOIP2016 普及组] 海港

【题目链接】 ybt 1975:【16NOIP普及组】海港 洛谷 P2058 [NOIP2016 普及组] 海港 【题目考点】 1. 模拟 2. 队列 【解题思路】 解法1:设队列,每个人是队列中的一个元素 由于人数总和(即k的加和)最大为 3 ∗ 1 …

Python “贪吃蛇”游戏,在不断改进中学习pygame编程

目录 前言 改进过程一 增加提示信息 原版帮助摘要 pygame.draw pygame.font class Rect class Surface 改进过程二 增加显示得分 改进过程三 增加背景景乐 增加提示音效 音乐切换 静音切换 mixer.music.play 注意事项 原版帮助摘要 pygame.mixer pygame.mix…

最大公约数题--夏令营

题目: 知识点: 1。数论-欧几里得算法-gcd最大公因数性质 证明性质2,为什么两组的公约数相等,同样,最大公约数也相等 算法表示 int gcd(int a, int b) {return b 0 ? a : gcd(b, a % b); } 2.分析题目:…

day20 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

目录: 解题及思路学习 654.最大二叉树 654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最…

批量将excel中第5列中内容将人名和电话号码进行分列

使用Python可以使用openpyxl库来实现批量将Excel中第5列的内容分列为人名和电话号码的操作。下面是示例代码: import openpyxl def split_names_and_phone_numbers(file_path, sheet_name): # 加载Excel文件 workbook openpyxl.load_workbook(file_path) …