第 2 章 更改 SELinux 状态和模式
启用后,SELinux 可使用两种模式之一运行: enforcing 或 permissive。以下小节介绍了如何永久更改这些模式。
2.1. SELinux 状态和模式的更改
如 SELinux 状态和模式 中所述,SELinux 可以被启用或禁用。启用后,SELinux 有两个模式: enforcing 和 permissive。
使用 getenforce
或 sestatus
命令检查 SELinux 的运行模式。getenforce
命令返回 Enforcing
、Permissive
或 Disabled
。
sestatus
命令返回 SELinux 状态以及正在使用的 SELinux 策略:
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
当系统以 permissive 模式运行 SELinux 时,用户和进程可能会错误地标记各种文件系统对象。当禁用 SELinux 时创建的文件系统对象不会被标记。这会在将 SELinux 改为 enforcing 模式时导致问题,因为 SELinux 依赖于正确的文件系统对象标签。
为防止错误标记和未标记的文件造成问题,SELinux 在从 disabled 状态更改为 permissive 或 enforcing 模式时自动重新标记文件系统。以 root 用户身份使用 fixfiles -F onboot
命令创建包含 -F
选项的 /.autorelabel
文件,以确保在下次重启时重新标记文件。
在重新引导系统以进行重新标记之前,请确保系统将以 permissive 模式引导,例如使用 enforcing=0
内核选项。在启动 selinux-autorelabel
服务前,当系统包括 systemd
需要的未被标记的文件时,系统无法引导。如需更多信息,请参阅 RHBZ#2021835。