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

步骤

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

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

    # fixfiles -F onboot

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

    警告

    进入 fixfiles -F onboot 命令前,始终切换到 permissive 模式。

    默认情况下,autorelabel 使用并行多个线程,因为系统有可用的 CPU 内核。要在自动重新标记过程中只使用单个线程,请使用 fixfiles -T 1 onboot 命令。

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

验证

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

    $ getenforce
    Enforcing

后续步骤

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

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

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.