搜索

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

download PDF

如果您需要设置默认 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
    …

    在与您的场景对应的 man page 中,找到相关的 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 策略模块 部分。

其他资源

  • man -k selinux 命令提供的与 SELinux 相关的 man page
  • sesearch (1), semanage-fcontext (8), semanage-boolean (8), 和 getsebool (8) 手册页
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.