用于添加 SELinux 上下文等效性的 Ansible 模块

用于添加 SELinux 上下文等效性的 Ansible 模块

是否有一个 Ansible 模块允许添加 SELinux 上下文等效性?命令是:

semanage fcontext -a -e /home/xxx /srv/xxx

这使得 SELinux 被视为/srv/xxx等同于/home/xxx

虽然我可以使用该command模块,但它只能工作一次;之后它总是失败:

ValueError: Equivalence class for /srv/xxx already exists

我可以使用该shell模块并运行如下命令:

semanage fcontext -a -e /home/xxx /srv/xxx || true

但由于该命令每次运行,Ansible 总是报告某些内容发生了变化(即使上下文等价已经存在)。

答案1

最接近的 Ansible 模块semanage fcontext社区.general.sefcontext。看起来它是幂等的并且支持 diff 模式。

但是,--equal我找不到与之等同的东西。将您想要的上下文写为参数setype。例如user_home_t。在这种情况下,我更希望事实来源是剧本,而不是主机上的其他文件。

如果您愿意--equal,请考虑自己编写并提交该模块的增强请求。

答案2

社区.general.sefcontext模块substitute在 community.general 6.4.0 中添加了一个参数来支持此功能

如果您尝试使用它并看到一条消息,missing required arguments: setype则表示您的 community.general 版本太旧了。

相关内容