community.general.sefcontext 模块 – 管理 SELinux 文件上下文映射定义

注意

此模块是 community.general 集合 (版本 10.1.0) 的一部分。

如果您正在使用 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install community.general。您需要进一步的要求才能使用此模块,请参阅 需求 获取详细信息。

要在 playbook 中使用它,请指定: community.general.sefcontext

概要

  • 管理 SELinux 文件上下文映射定义。

  • 类似于 semanage fcontext 命令。

需求

执行此模块的主机需要以下需求。

  • libselinux-python

  • policycoreutils-python

参数

参数

注释

ftype

字符串

应应用 SELinux 上下文的文 件类型。

以下文件类型选项可用

a 代表所有文件,

b 代表块设备,

c 代表字符设备,

d 代表目录,

f 代表普通文件,

l 代表符号链接,

p 代表命名管道,

s 代表套接字文件。

选项

  • "a" ← (默认)

  • "b"

  • "c"

  • "d"

  • "f"

  • "l"

  • "p"

  • "s"

ignore_selinux_state

布尔值

适用于无法获取真实 SELinux 状态的场景(chroot 环境)。

选项

  • false ← (默认)

  • true

reload

布尔值

提交后重新加载 SELinux 策略。

请注意,这不会将 SELinux 文件上下文应用于现有文件。

选项

  • false

  • true ← (默认)

selevel

别名:serange

字符串

为指定的 target 指定的 SELinux 范围。

对于新的文件上下文,默认为 s0;修改文件上下文时,默认为现有值。

setype

字符串

为指定的 target 指定的 SELinux 类型。

seuser

字符串

为指定的 target 指定的 SELinux 用户。

对于新的文件上下文,默认为 system_u;修改文件上下文时,默认为现有值。

state

字符串

SELinux 文件上下文必须为 absentpresent

不指定setypesubstitute而仅指定absent,将会删除与target匹配的SELinux类型或路径替换映射。

选项

  • "absent"

  • "present" ← (默认值)

substitute

别名: equal

字符串

在 community.general 6.4.0 版本中添加

用于替换指定target文件的上下文路径。 target子树的上下文标记将与该路径等效。

这也被称为SELinux文件上下文等效性,它实现了SELinux管理工具的equal功能。

target

别名: path

字符串 / 必需

目标路径(表达式)。

属性

属性

支持

描述

check_mode

支持: 完全支持

可以在check_mode下运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持: 完全支持

在差异模式下,将返回关于已更改内容(或可能需要在check_mode下更改的内容)的详细信息。

平台

平台: Linux

可以对其进行操作的目标操作系统/系列。

备注

注意

  • 这些更改在重新启动后仍然有效。

  • setypesubstitute互斥。

  • 如果state=present,则必须指定setypesubstitute之一。

  • community.general.sefcontext模块不会修改现有文件以适应新的SELinux上下文,因此建议先创建SELinux文件上下文,然后再创建文件,或者手动为需要新SELinux文件上下文的现有文件运行restorecon

  • 不将SELinux fcontext应用于现有文件是一个经过深思熟虑的决定,因为它不清楚报告的更改会带来什么后果,而且不能保证应用SELinux fcontext不会拾取其他无关的先前更改。

示例

- name: Allow apache to modify files in /srv/git_repos
  community.general.sefcontext:
    target: '/srv/git_repos(/.*)?'
    setype: httpd_sys_rw_content_t
    state: present

- name: Substitute file contexts for path /srv/containers with /var/lib/containers
  community.general.sefcontext:
    target: /srv/containers
    substitute: /var/lib/containers
    state: present

- name: Delete file context path substitution for /srv/containers
  community.general.sefcontext:
    target: /srv/containers
    substitute: /var/lib/containers
    state: absent

- name: Delete any file context mappings for path /srv/git
  community.general.sefcontext:
    target: /srv/git
    state: absent

- name: Apply new SELinux file context to filesystem
  ansible.builtin.command: restorecon -irv /srv/git_repos

作者

  • Dag Wieers (@dagwieers)