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
    …

    在与您的场景对应的手册页中,找到相关的 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
    …
  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
    …
  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
  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
    …
  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 };
    …
  7. 如果前面的解决方案没有涵盖您的场景,您可以在 SELinux 策略中添加自定义规则。如需更多信息,请参阅 创建本地 SELinux 策略模块 部分。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部