2.4. 在之前禁用的系统中启用 SELinux
为了避免问题(如系统无法引导或进程失败),当在之前已禁用它的系统上启用 SELinux 时,首先在 permissive 模式下解析 Access Vector Cache (AVC)消息。
当系统以 permissive 模式运行 SELinux 时,用户和进程可能会错误地标记各种文件系统对象。当禁用 SELinux 时创建的文件系统对象不会被标记。这会在将 SELinux 改为 enforcing 模式时导致问题,因为 SELinux 依赖于正确的文件系统对象标签。
为防止错误标记和未标记的文件造成问题,SELinux 在从 disabled 状态更改为 permissive 或 enforcing 模式时自动重新标记文件系统。
在重新引导系统以进行重新标记之前,请确保系统将以 permissive 模式引导,例如使用 enforcing=0
内核选项。在启动 selinux-autorelabel
服务前,当系统包括 systemd
需要的未被标记的文件时,系统无法引导。如需更多信息,请参阅 RHBZ#2021835。
步骤
- 以 permissive 模式启用 SELinux。如需更多信息,请参阅切换到 permissive 模式。
重启您的系统:
reboot
# reboot
Copy to Clipboard Copied! - 检查 SELinux 拒绝消息。如需更多信息,请参阅 识别 SELinux 拒绝。
确保在下次重启时重新标记文件:
fixfiles -F onboot
# fixfiles -F onboot
Copy to Clipboard Copied! 这会创建包含
-F
选项的/.autorelabel
文件。警告进入
fixfiles -F onboot
命令前,始终切换到 permissive 模式。默认情况下,
autorelabel
尽可能并行使用与系统可用 CPU 核数一样多的线程。要在自动重新标记过程中只使用单个线程,请使用fixfiles -T 1 onboot
命令。- 如果没有拒绝的操作,切换到 enforcing 模式。如需更多信息,请参阅在引导时进入 SELinux 模式。
验证
系统重启后,确认
getenforce
命令返回Enforcing
:getenforce
$ getenforce Enforcing
Copy to Clipboard Copied!
后续步骤
要在 enforcing 模式下使用 SELinux 运行自定义应用程序,请选择以下之一:
-
在
unconfined_service_t
域中运行您的应用程序。 - 为应用程序编写新策略。如需更多信息,请参阅 编写自定义 SELinux 策略 部分。