4.3. 查找用于管理访问非标准目录的正确的 SELinux 类型


如果您需要设置默认 SELinux 策略没有涵盖的访问控制规则,请首先搜索匹配您的用例的布尔值。如果您无法找到合适的布尔值,您可以使用匹配的 SELinux 类型,或甚至创建一个本地策略模块。

先决条件

  • selinux-policy-docsetools-console 软件包已安装在您的系统上。

流程

  1. 列出所有与 SELinux 相关的主题,并将结果限制到您要配置的组件。例如:

    # man -k selinux | grep samba
    samba_net_selinux (8) - Security Enhanced Linux Policy for the samba_net processes
    samba_selinux (8)    - Security Enhanced Linux Policy for the smbd processes
    …
    Copy to Clipboard Toggle word wrap

    在与您的场景对应的手册页中,找到相关的 SELinux 布尔值、端口类型和文件类型。

    请注意,只有在安装了 selinux-policy-doc 软件包后,man -k selinuxapropos selinux 命令才可用。

  2. 可选: 您可以使用 semanage fcontext -l 命令显示默认位置上进程的默认映射,例如:

    # semanage fcontext -l | grep samba
    …
    /var/cache/samba(/.*)?                             all files          system_u:object_r:samba_var_t:s0
    …
    /var/spool/samba(/.*)?                             all files          system_u:object_r:samba_spool_t:s0
    …
    Copy to Clipboard Toggle word wrap
  3. 使用 sesearch 命令显示默认 SELinux 策略中的规则。您可以通过列出相应的规则来查找要使用的类型和布尔值,例如:

    $ sesearch -A | grep samba | grep httpd
    …
    allow httpd_t cifs_t:dir { getattr open search }; [ use_samba_home_dirs && httpd_enable_homedirs ]:True
    …
    Copy to Clipboard Toggle word wrap
  4. SELinux 布尔值可能是对您的配置问题的最直接的解决方案。您可以使用 getsebool -a 命令显示所有可用的布尔值及其值,例如:

    $ getsebool -a | grep homedirs
    git_cgi_enable_homedirs --> off
    git_system_enable_homedirs --> off
    httpd_enable_homedirs --> off
    mock_enable_homedirs --> off
    mpd_enable_homedirs --> off
    openvpn_enable_homedirs --> on
    ssh_chroot_rw_homedirs --> off
    Copy to Clipboard Toggle word wrap
  5. 您可以使用 sesearch 命令验证所选的布尔值是否正是您想要的,例如:

    $ sesearch -A | grep httpd_enable_homedirs
    …
    allow httpd_suexec_t autofs_t:dir { getattr open search }; [ use_nfs_home_dirs && httpd_enable_homedirs ]:True
    allow httpd_suexec_t autofs_t:dir { getattr open search }; [ use_samba_home_dirs && httpd_enable_homedirs ]:True
    …
    Copy to Clipboard Toggle word wrap
  6. 如果没有布尔值与您的场景匹配,请找到适合您情况的 SELinux 类型。您可以使用 sesearch ,通过从默认的策略中查询相应的规则来查找文件的类型,例如:

    $ sesearch -A -s httpd_t -c file -p read
    …
    allow httpd_t httpd_t:file { append getattr ioctl lock open read write };
    allow httpd_t httpd_tmp_t:file { append create getattr ioctl link lock map open read rename setattr unlink write };
    …
    Copy to Clipboard Toggle word wrap
  7. 如果前面的解决方案没有涵盖您的场景,您可以在 SELinux 策略中添加自定义规则。如需更多信息,请参阅 创建本地 SELinux 策略模块 部分。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat