4.2. 调整用于使用 SELinux 布尔值共享 NFS 和 CIFS 卷的策略

您可以使用布尔值在运行时更改 SELinux 策略部分,即使您不了解 SELinux 策略的编写方式。这启用了更改,比如允许服务访问 NFS 卷而无需重新载入或者重新编译 SELinux 策略。以下流程演示了列出 SELinux 布尔值并进行配置,以实现策略中所需的更改。

在客户端的 NFS 挂载使用 NFS 卷策略定义的默认上下文标记。在 RHEL 中,此默认上下文使用 nfs_t 类型。另外,挂载在客户端中的 Samba 共享使用策略定义的默认上下文标记。此默认上下文使用 cifs_t 类型。您可以启用或禁用布尔值来控制允许哪些服务访问 nfs_tcifs_t 类型。

要允许 Apache HTTP 服务器服务(httpd)访问和共享 NFS 和 CIFS 卷,请执行以下步骤:

先决条件

  • (可选)安装 selinux-policy-devel 软件包,以获取 semanage boolean -l 命令的输出中 SELinux 布尔值的更清晰和详细描述。

步骤

  1. 识别与 NFS、CIFS 和 Apache 相关的 SELinux 布尔值:

    # semanage boolean -l | grep 'nfs\|cifs' | grep httpd
    httpd_use_cifs                 (off  ,  off)  Allow httpd to access cifs file systems
    httpd_use_nfs                  (off  ,  off)  Allow httpd to access nfs file systems
  2. 列出布尔值的当前状态:

    $ getsebool -a | grep 'nfs\|cifs' | grep httpd
    httpd_use_cifs --> off
    httpd_use_nfs --> off
  3. 启用指定的布尔值:

    # setsebool httpd_use_nfs on
    # setsebool httpd_use_cifs on
    注意

    使用 setsebool-P 选项,使更改在重新启动后仍然有效。setsebool -P 命令需要重建整个策略,且可能需要一些时间,具体取决于您的配置。

验证

  1. 检查布尔值为 on

    $ getsebool -a | grep 'nfs\|cifs' | grep httpd
    httpd_use_cifs --> on
    httpd_use_nfs --> on

其他资源

  • semanage-boolean(8), sepolicy-booleans(8), getsebool(8), setsebool(8), booleans(5), 和 booleans(8) man pages