如何仅在 Minon 安装了 SELinux 时强制执行状态?

问题描述 投票:0回答:2

我有安装自定义

selinux
模块的代码。在我的 Minion 舰队中,有基于 Fedora 的系统(安装了 SELinux)和基于 Debian 的系统(没有安装 SELinux)。对于后者,不应使用模块/安装状态,因此我正在寻找一种方法来检索“此系统上是否安装了 SELinux?”这个问题的简洁答案。 (NOT“SELinux 在此系统上强制执行吗?”)在相应的
jinja2
if
子句中使用。

让我绝望的尝试是:

  • Salt 中似乎没有状态查询给定的二进制文件是否在
    $PATH
    上 - 检查
    sestatus
    就是我在这里所追求的。
  • salt.states.selinux
    在没有 SELinux 的系统上不可用,因此它的功能没有帮助。
  • 我也找不到任何 Salt 功能来查询
    salt.states.selinux
    (见上文)之类的东西的本地可用性。
  • 类似的东西
    - unless: - rpm -q libselinux
    
    (来自这个答案)也不起作用,因为
    rpm
    是Fedora特定的......
  • 检查 /etc/selinux 是否缺失也不是一个选项,因为 Debian 系统实际上有这样的功能。

任何有关如何进行此操作的提示都值得赞赏。

salt-project selinux
2个回答
0
投票

如果安装了selinux,则agrain可用:

{% if 'selinux' in grains %}

# stuff that's only included if selinux is available

{% endif %}

您还可以使用该颗粒来瞄准小兵:

base:
  'selinux:*':
    - match: grain
    - my_states.for_selinux_only

一般情况下,你还可以检查模块是否已加载:

{% if 'selinux.getconfig' in salt %}

0
投票

按照this提示,我最终做了:

{% if salt['pkg.version']('libselinux') %}
...
{% endif %}

这不是我所说的简洁并使用有些复杂的逻辑,但它似乎可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.