【Linux】如何管理SELinux?

2024-04-23 19:34:52 浏览数 (1)

SELinux模式

SELinux模式分类

  1. ermissive 模式:经常用于排故。这个模式,SELinux允许所有访问,即使与规则冲突,但会记录拒绝访问的行为日志。 强制模式和允许模式之间变更, 不需要重启系统。
  2. enforcing 模式: SELinux强制执行访问控制规则。 在强制模式下,如果规 则没有明确允许访问,则拒绝访问,并写入日志。
  3. disable 模式:完全关闭SELinux。不拒绝任何SELinux违规,不予记录。从 强制模式或者允许模式变更到禁用模式,或者从禁用模式变更到强制模式或 者允许模式都 需要重启系统。

SELinux标签

SELinux标签有多个内容:用户,角色,类型和敏感度。

在这里插入图片描述在这里插入图片描述

更改SELinux模式

查看当前生效的模式

代码语言:javascript复制
[root@workstation ~]# getenforce
Enforcing

强制模式临时切换为允许模式

代码语言:javascript复制
[root@workstation ~]# setenforce 0|Permissive

允许模式临时切换为强制模式

代码语言:javascript复制
[root@workstation ~]# setenforce 1|Enforcing

强制模式和允许模式切换成disabled模式或者disabled模式切换成强制模式和 允许模式,都需要重启系统才能生效。

切换方法:编辑配置文件

代码语言:javascript复制
[root@workstation ~]# vim /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted

设置SELinux默认策略方法。

控制SELinux上下文

在运行SELinux的系统上,所有进程和文件都会有相应的标签。新文件通常从父目录继承其SELinux上下文,从而确保它们具有适当的上下文。

但是,有两种情况例外: 如果在不同的位置创建文件,然后移动文件, 则该文件将具有创建它 时所在目录的SELinux上下文,而不是目标目录的SELinux上下文。

如果是复制一个保留SELinux上下文的文件(正如使用cp -a 命令),则 SELinux上下文将反映原始文件的位置。

更改SELinux上下文

  1. semanage fcontext命令,声明文件的默认标签,将标签添加至数据库中,需要使用estorecon恢复时才可生效

选项

描述

-a,–add

添加指定对象类型的记录

-d , --delete

删除指定对象类型的记录

-l, --list

列出指定对象类型的记录

  1. estorecon命令,将该semanage fcontext声明的默认标签应用于文件。这样可确保标签符合预期,即便在对文件系统完全重新标记之后也是如此。
  2. chcon命令,更改文件SELinux上下文,它不会将上下文更改保存到SELinux上下文数据库中。当 restorecon命令运行时, chcon命令所做的更改也同样无法保留。此外,如果对整个文件系统进行重新标记,则使用chcon更改过的文件的SELinux上下文将恢复

semanage fcontext命令用于显示和修改默认规则,restorecon命令将使用这个规则恢复文本默认规则。semanage fcontext命令使用扩展的正则表达式指定路径和文件名。比较常见的扩展正则表达式(/.*)?,表示随意匹配/后面接任意数量字符,递归匹配文件夹下的子文件和子文件夹。

示例:
定义文件默认SELinux上下文

下面代码使用semanage fcontext命令为/test目录添加了默认标签,并使用estorecon命令对目录进标签的更新

代码语言:javascript复制
[root@et8en ~]# mkdir /test
[root@et8en ~]# ll -Zd /test/
drwxr-xr-x. 2 root root unconfined_u:object_r:default_t:s0 6 Jun 24 00:06 /test/
[root@et8en ~]# semanage fcontext -a -t httpd_sys_content_t '/test(/.*)?'
[root@et8en ~]# ll -Zd /test/
drwxr-xr-x. 2 root root unconfined_u:object_r:default_t:s0 6 Jun 24 00:06 /test/
[root@et8en ~]# restorecon -RFv /test/   重置该目录内所有文件规则
Relabeled /test from unconfined_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0
chcon命令临时修改SELinux上下文

这里/test的默认标签为httpd_sys_content_t,我们通过chcon命令临时修改了标签,之后使用restorecon命令将恢复为数据库存储的标签内容

代码语言:javascript复制
[root@et8en ~]# chcon -t default_t /test
[root@et8en ~]# ll -Zd /test/
drwxr-xr-x. 2 root root system_u:object_r:default_t:s0 6 Jun 24 00:06 /test/
[root@et8en ~]# restorecon -v /test/
Relabeled /test from system_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0

0 人点赞