【问题标题】:Salt-stack working with Pam.d与 Pam.d 一起使用的盐栈
【发布时间】:2015-11-19 17:36:53
【问题描述】:

所有系统运行RHEL6 所以,我的最终目标是能够拥有状态控制的 pam 配置(system-authpassword-auth)。这也不会干扰可能需要在本地系统到系统基础上发生的更改。

基本上我想在 pam 配置文件中添加诸如 pam_cracklib 之类的行,而不必用 file.managed 覆盖整个文件

当前system-auth的示例(不是完整示例,已删除一些项目)

auth        required      pam_env.so
auth        sufficient    pam_unix.so  try_first_pass
auth        requisite     pam_succeed_if.so uid >= 100 quiet
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required      pam_permit.so

password    sufficient    pam_unix.so sha512 shadow  try_first_pass use_authtok remember=24
password    required      pam_deny.so

一个示例问题:

我需要这条线:

password    requisite     pam_cracklib.so try_first_pass retry=3 dcredit=-1 minlen=12 ucredit=-1 ocredit=-1 lcredit=-1 difok=3

使用这些设置出现在pam_unix.so 条目的password 行上方,如下所示:

password    requisite     pam_cracklib.so try_first_pass retry=3 dcredit=-1 minlen=12 ucredit=-1 ocredit=-1 lcredit=-1 difok=3
password    sufficient    pam_unix.so sha512 shadow  try_first_pass use_authtok remember=24

在某些情况下,pam_cracklib 可能已经存在,我可以简单地使用file.replace 状态为pam_cracklib 找到pattern 并将其替换为好的行。在其他情况下,可能需要添加 pam_cracklib,因此 file.replaceappendingprepending 的限制会导致问题。

另一个例子是pam_faillock.so,它需要插入到非常具体的行上。 IE 在其他重要的 pam 模块之前或之后。

我考虑过硬着头皮使用file.managed 将统一的pam 文件强制执行到我的系统中,然后根据需要进行异常以保持其他功能正常运行,但这感觉就像把自己逼到角落里一样.

关于在不强制执行整个文件的情况下处理特定项目位置放置的方法有什么建议吗?在sed 中,我可以使用() 和escape 的\1\2 来保留部分模式,并结合newlines 等等,我可以查找模式并替换文本高于或低于一条线,然后继续前进。但据我所知,file.replace 无法做到这一点。我想我可以简单地使用cmd.run 发出一个sed 命令,但是我不得不对每次强制执行状态时都会运行的事实感到恼火。

【问题讨论】:

    标签: regex linux sed salt-stack rhel6


    【解决方案1】:
    • 我听说Auegas 应该解决对各种配置文件的通用读写访问 - Salt has its module。有一个PAM lense
    • 另一个指针是file.managed,带有marker_startmarker_end 参数。这种方法非常适用于简单的配置,例如 hosts file,其中手动维护的部分与自动执行的部分分开。

    一般说明

    支持系统上各种配置文件的语法自动修改是一个根本性的难题。完全覆盖目标文件的模板提供了具有您所述限制的通用方法。如果需要读取目标文件并有条件地对其原始内容进行一些修改,则通用方法的复杂性会爆炸式增长。

    考虑自动更改(手动编写)源代码,同时保持其可读性并保证之后语义正确的运行时,对所有前 10 种编程语言都这样做。

    即使一般格式很简单(例如文本行),仍然存在满足使用此配置的软件的期望的问题。行的顺序重要吗?重复的行会是非法的吗? cmets应该保留吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 2017-03-12
      • 1970-01-01
      • 2016-09-25
      • 2014-07-08
      • 2018-11-23
      • 2016-12-14
      相关资源
      最近更新 更多