目录
(1)semanage fcontext + restorecon 命令:
本篇文章只讲述有关 SELinux 文件上下文及布尔值的内容,如需了解有关 SELinux 的基本概念、执行模式以及如何解决 SELinux 问题的内容,可转跳至 Linux 系列的上篇文章:Linux(26)—— SELinux 概念及故障排除。
转跳链接如下:https://blog.youkuaiyun.com/m0_68756914/article/details/146768024
一、SELinux 文件上下文:
在运行 SELinux 的系统上,所有进程和文件都有相应的标签,代表了与安全有关的信息,称为 SELinux 上下文( SELinux context )。
1、文件标签策略数据库:
SELinux 在 /etc/selinux/targeted/contexts/files/ 目录中维护基于文件的文件标签策略数据库。新文件在文件名与现有标签策略匹配时获得默认标签。
注:(1)新文件通常从父目录继承其 SELinux context(mv 或 cp -a 除外);
(2)移动的文件保留其原始标签,复制的文件将继承目标目录的标签。
2、策略访问规则:
Web 服务器的 type context 是 httpd_t。策略规则允许 Apache 访问标记了 httpd_sys_content_t 类型上下文的文件和目录,且默认情况下,Web 服务器策略没有使用标有 tmp_t 的文件的 allow 规则(如 /tmp 和 /var/tmp 目录),因此不允许访问。在启用 SELinux 的情况下,破坏了 Web 服务器进程的恶意用户将无法访问 /tmp 目录。
注:1)位于 /var/www/html 中的文件和目录的 type context 是 httpd_sys_content_t ;
2)位于/tmp 和 /var/tmp 中的文件和目录 type context 是 tmp_t ;
3)Web 服务器端口的 type context 是http_port_t 。
MariaDB 服务器进程使用 mysqld_t 类型上下文运行。默认情况下,在 /data/mysql 目录中的文件具有 mysqld_db_t 类型的 type context,该 type context 允许 MariaDB 访问这些文件,但禁止其他服务(如: Apache 服务、标有 httpd_sys_content_t 的文件)的访问。
二、设置上下文:
许多命令都使用 -Z 选项 来显示或设置 SELinux context 。例如,ps 、ls 、cp 和 mkdir 命令都使用 -Z 选项。
1、查看 SELinux 上下文:
(1)ls -Z :
ls -Z 命令可显示文件的 SELinux context 。
(2)ls -Zd :
ls -Zd 命令可显示目录的 SELinux context。
2、更改 SELinux 上下文:
(1)semanage fcontext + restorecon 命令:
先使用 semanage fcontext 命令可创建文件的上下文策略。
然后使用 restorecon 命令将该策略中指定的上下文应用于文件。
(2)chcon 命令:
chcon 命令直接在文件上更改 SELinux context ,不引用系统的 SELinux 策略。且此命令不会将 context 更改保存到 SELinux context 数据库中,因此运行 restorecon 命令后上下文将还原。
3、定义 SELinux 默认上下文:
semanage fcontext 命令可显示和修改文件默认的上下文策略。
注:fcontext 规则中最常用的扩展正则表达式是 (/.*)? ,表示一个以斜杠开头后跟任意数量字符的字符集,此集合可以存在可以不存在。
semanage fcontext 命令的选项如下表:
选项 | 描述 |
---|---|
-a 、--add | 添加指定对象类型的记录 |
-d 、--delete | 删除指定对象类型的记录 |
-l 、--list | 列出指定对象类型的记录 |
三、SELinux 布尔值:
开发人员可以在 SELinux 策略中包含可选的应用行为,当特定系统允许相关行为时启用该策略。SELinux 布尔值可以启用或禁用 SELinux 策略的可选行为,有选择的调整应用的行为。
这些可选行为是特定于应用的,必须为各个目标应用发现和选择。如需了解服务相关的布尔值,可参阅该服务的 SELinux man page ( SELinux man page 在 selinux-policy-doc 软件包中提供)。
注:例如,Web 服务器 httpd 服务有其 httpd(8) man page ,以及用于记录其 SELinux 策略的 httpd_selinux(8) man page ,包括支持的进程类型、文件上下文以及可用的布尔值。
四、使用布尔值调整 SELinux 策略:
1、普通用户:
普通用户可以运行 getsebool 命令激活和停用 SELinux 策略规则。
2、超级用户:
(1)semanage boolean -l 命令:
超级用户可运行 semanage boolean -l 命令管理 SELinux 布尔值的持久值。
运行 semanage boolean -l -C 命令可列出当前状态与默认状态不同的布尔值。
(2)setsebool -P 命令:
超级用户还可以运行 setsebool -P 命令写入策略文件,使设置持久有效。