Red Hat Training

A Red Hat training course is available for RHEL 8

2.4. 在之前禁用的系统中启用 SELinux

为了避免问题,比如系统无法引导或进程失败,请在之前禁用它的系统中启用 SELinux 时按照以下步骤操作。

警告

当系统以 permissive 模式运行 SELinux 时,用户和进程可能会错误地标记各种文件系统对象。当禁用 SELinux 时创建的文件系统对象不会被标记。这会在将 SELinux 改为 enforcing 模式时导致问题,因为 SELinux 依赖于正确的文件系统对象标签。

为防止错误标记和未标记的文件造成问题,SELinux 在从 disabled 状态更改为 permissive 或 enforcing 模式时自动重新标记文件系统。

在重新引导系统以进行重新标记之前,请确保系统将以 permissive 模式引导,例如使用 enforcing=0 内核选项。在启动 selinux-autorelabel 服务前,当系统包括 systemd 需要的未被标记的文件时,系统无法引导。如需更多信息,请参阅 RHBZ#2021835

步骤

  1. 以 permissive 模式启用 SELinux。如需更多信息,请参阅切换到 permissive 模式
  2. 重启您的系统:

    # reboot
  3. 检查 SELinux 拒绝信息。如需更多信息,请参阅 识别 SELinux 拒绝操作信息
  4. 确保在下次重启时重新标记文件:

    # fixfiles -F onboot

    这会创建包含 -F 选项的 /.autorelabel 文件。

    警告

    进入 fixfiles -F onboot 命令前,始终切换到 permissive 模式。这可防止系统在系统包含未标记的文件时无法引导。如需更多信息,请参阅 RHBZ#2021835

  5. 如果没有拒绝的操作,切换到 enforcing 模式。如需更多信息,请参阅在引导时进入 SELinux 模式

验证

  1. 系统重启后,确认 getenforce 命令返回 Enforcing:

    $ getenforce
    Enforcing
注意

要在 enforcing 模式下使用 SELinux 运行自定义应用程序,请选择以下之一:

  • unconfined_service_t 域中运行您的应用程序。
  • 为应用程序编写新策略。如需更多信息,请参阅 编写自定义 SELinux 策略 部分。

其他资源