24.3. 使用 selinux RHEL 系统角色部署 SELinux 模块


如果默认的 SELinux 策略不满足您的要求,您可以创建自定义模块来允许您的应用程序访问所需的资源。通过使用 selinux RHEL 系统角色,您可以自动化此过程,并远程部署 SELinux 模块。

先决条件

  • 您已准备好控制节点和受管节点
  • 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
  • 您用于连接到受管节点的帐户对它们具有 sudo 权限。
  • 您要部署的 SELinux 模块存储在与 playbook 同样的目录中。
  • SELinux 模块以通用中间语言(CIL)或策略软件包(PP)格式提供。

    如果使用 PP 模块,请确保受管节点上的 policydb 版本与用来构建 PP 模块的版本相同或更新。

流程

  1. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Managing SELinux
      hosts: managed-node-01.example.com
      tasks:
        - name: Deploying a SELinux module
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.selinux
          vars:
            selinux_modules:
              - path: <module_file>
    	    priority: <value>
                state: enabled
    Copy to Clipboard Toggle word wrap

    示例 playbook 中指定的设置包括如下:

    path: <module_file>
    设置控制节点上模块文件的路径。
    priority: <value>
    设置 SELinux 模块优先级。400 是默认值。
    state: <value>

    定义模块的状态:

    • enabled :安装或启用模块。
    • disabled :禁用模块。
    • absent :删除模块。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.selinux/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

验证

  • 远程显示您在 playbook 中使用的 SELinux 模块和过滤器的列表:

    # ansible managed-node-01.example.com -m shell -a 'semodule -l | grep <module>'
    Copy to Clipboard Toggle word wrap

    如果列出了模块,则其已安装且启用了。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat