SELinux模式
SELinux模式分类
- ermissive 模式:经常用于排故。这个模式,SELinux允许所有访问,即使与规则冲突,但会记录拒绝访问的行为日志。 强制模式和允许模式之间变更, 不需要重启系统。
- enforcing 模式: SELinux强制执行访问控制规则。 在强制模式下,如果规 则没有明确允许访问,则拒绝访问,并写入日志。
- 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上下文
- semanage fcontext命令,声明文件的默认标签,将标签添加至数据库中,需要使用estorecon恢复时才可生效
选项 | 描述 |
---|---|
-a,–add | 添加指定对象类型的记录 |
-d , --delete | 删除指定对象类型的记录 |
-l, --list | 列出指定对象类型的记录 |
- estorecon命令,将该semanage fcontext声明的默认标签应用于文件。这样可确保标签符合预期,即便在对文件系统完全重新标记之后也是如此。
- 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