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
- 检查 SELinux 拒绝消息。如需更多信息,请参阅 识别 SELinux 拒绝。
确保在下次重启时重新标记文件:
# fixfiles -F onboot
这会创建包含
-F
选项的/.autorelabel
文件。警告进入
fixfiles -F onboot
命令前,始终切换到 permissive 模式。默认情况下,
autorelabel
使用并行多个线程,因为系统有可用的 CPU 内核。要在自动重新标记过程中只使用单个线程,请使用fixfiles -T 1 onboot
命令。- 如果没有拒绝的操作,切换到 enforcing 模式。如需更多信息,请参阅在引导时进入 SELinux 模式。
验证
系统重启后,确认
getenforce
命令返回Enforcing
:$ getenforce Enforcing
后续步骤
要在 enforcing 模式下使用 SELinux 运行自定义应用程序,请选择以下之一:
-
在
unconfined_service_t
域中运行您的应用程序。 - 为应用程序编写新策略。如需更多信息,请参阅 编写自定义 SELinux 策略 部分。
其他资源
- SELinux 状态和模式部分涵盖了模式中的临时更改。