4.4. SELinux 状态和模式中的永久性更改


第 1.4 节 “SELinux 状态和模式” 所述,SELinux 可以启用或禁用。启用后,SELinux 有两个模式: enforcing 和 permissive。
使用 getenforcesestatus 命令检查 SELinux 的运行模式。getenforce 命令返回 EnforcingPermissiveDisabled
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
Max kernel policy version:      30
注意
当系统以 permissive 模式运行 SELinux 时,用户可以错误地标记文件。在禁用 SELinux 时创建的文件根本不标记。这个行为会在更改为 enforcing 模式时导致问题,因为文件被错误地标记或者根本不标记文件。为了防止不正确标记和未标记的文件造成问题,当从 disabled 状态改为 permissive 或 enforcing 模式时会自动重新标记文件系统。

4.4.1. 启用 SELinux

启用后,SELinux 可使用两种模式之一运行: enforcing 或 permissive。以下小节介绍了如何永久更改这些模式。
在之前禁用的系统中启用 SELinux 时,为了避免问题(如系统无法引导或进程失败),红帽建议按照以下步骤执行:
  1. 以 permissive 模式启用 SELinux。如需更多信息,请参阅 第 4.4.1.1 节 “Permissive 模式”
  2. 重启您的系统。
  3. 检查 SELinux 拒绝信息。如需更多信息,请参阅 第 11.3.5 节 “搜索和查看地址”
  4. 如果没有拒绝的操作,切换到 enforcing 模式。如需更多信息,请参阅 第 4.4.1.2 节 “强制模式”
要在 enforcing 模式下使用 SELinux 运行自定义应用程序,请选择以下之一:

4.4.1.1. Permissive 模式

当 SELinux 是以 permissive 模式运行时,不会强制 SELinux 策略。系统可保持正常操作,SELinux 不会拒绝任何操作,而只是记录 AVC 信息,它们可用于故障排除、调试和 SELinux 策略改进。每个 AVC 在这个示例中仅记录一次。
要将模式永久改为 permissive,请按照以下步骤操作:

过程 4.2. 进入许可模式

  1. 编辑 /etc/selinux/config 文件,如下所示:
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - No SELinux policy is loaded.
    SELINUX=permissive
    # SELINUXTYPE= can take one of these two values:
    #       targeted - Targeted processes are protected,
    #       mls - Multi Level Security protection.
    SELINUXTYPE=targeted
  2. 重启系统:
    ~]# reboot

4.4.1.2. 强制模式

当 SELinux 处于 enforcing 模式时,它会强制 SELinux 策略并根据 SELinux 策略规则拒绝访问。在 Red Hat Enterprise Linux 中,当系统最初使用 SELinux 安装时,默认启用 enforcing 模式。
如果禁用了 SELinux,请按照以下步骤将模式再次改为 enforcing:

过程 4.3. 进入强制模式

这个过程假设安装了 selinux-policy-targeted、selinux-policylibselinuxlibselinux-pythonlibselinux-utils、policycoreutilspolicycoreutils-python 软件包。要验证软件包是否已安装,请使用以下命令:
rpm -q package_name
  1. 编辑 /etc/selinux/config 文件,如下所示:
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - No SELinux policy is loaded.
    SELINUX=enforcing
    # SELINUXTYPE= can take one of these two values:
    #       targeted - Targeted processes are protected,
    #       mls - Multi Level Security protection.
    SELINUXTYPE=targeted
  2. 重启系统:
    ~]# reboot
    在下一次引导中,SELinux 会重新标记系统中的所有文件和目录,并为禁用 SELinux 时创建的文件和目录添加 SELinux 上下文。
注意
切换到 enforcing 模式后,SELinux 可能会因为不正确或缺少 SELinux 策略规则而拒绝某些操作。要查看 SELinux 拒绝的操作,以 root 用户身份输入以下命令:
~]# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
另外,安装 setroubleshoot-server 软件包后,以 root 用户身份输入以下命令:
~]# grep "SELinux is preventing" /var/log/messages
如果 SELinux 拒绝某些操作,请参阅 第 11 章 故障排除 以获得有关故障排除的信息。
第 1.4 节 “SELinux 状态和模式” 涵盖了对模式的临时更改。

4.4.2. 禁用 SELinux

禁用 SELinux 时,SELinux 策略不被加载 ; 它不会被强制执行,也不会记录 AVC 信息。因此,运行 第 1.1 节 “运行 SELinux 的好处” 中列出的 SELinux 的所有益处都丢失。
重要
红帽强烈建议您使用 permissive 模式,而不是永久禁用 SELinux。有关 permissive 模式的更多信息,请参阅 第 4.4.1.1 节 “Permissive 模式”
要永久禁用 SELinux,请按照以下步骤执行:

过程 4.4. 禁用 SELinux

  1. /etc/selinux/config 文件中配置 SELINUX=disabled
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of these two values:
    #       targeted - Targeted processes are protected,
    #       mls - Multi Level Security protection.
    SELINUXTYPE=targeted
  2. 重启您的系统。重新引导后,确认 getenforce 命令返回 Disabled
    ~]$ getenforce
    Disabled
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.