2015-11-19 57 views
0

运行的所有系统RHEL6 所以,我的最终目标是能够拥有状态控制的pam配置(system-authpassword-auth)。这也不会影响可能需要在本地系统和系统基础上进行的更改。堆栈使用Pam.d

基本上我想行添加到的东西像pam_cracklib的PAM配置文件,而不必只是简单地覆盖整个文件与当前system-authfile.managed

例子(不是一个完整的例子,一些项目中去除)

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 

出现,使用这些设置,上面password线pam_unix.so进入像这样的:

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状态找到patternpam_cracklib并用好线代替它。在其他情况下,可能需要添加pam_cracklib,因此file.replaceappendingprepending的限制会导致问题。

另一个例子是pam_faillock.so,它需要插入非常特定的行。 IE之前或之后的其他pam模块的重要性。

我已经考虑过咬住子弹并使用file.managed强制执行一个统一的pam文件到我的系统,然后根据需要制定例外以保持其他功能,但这些感觉就像将自己绘制到一个角落。

有关处理特定商品位置展示位置的方法的任何建议,而不强制执行整个文件?在sed我也可以使用()“与逃逸的\1\2沿s到保持模式的部分内容,并与newlines组合并没有什么,我可以寻找模式和替换上面或行下方,并继续前进。但据我所知,不能用file.replace来完成。我想我可以简单地用cmd.run发出一个sed命令,但是我必须为每次执行状态时都会运行的事实感到恼火。

回答

1
  • 听说Auegas应处理各种配置文件通用的读写访问 - Salt has its module。有一个PAM lense
  • 另一个指针是file.managedmarker_startmarker_end参数。此方法适用于简单配置,如hosts file,其中手动维护的部分与自动执行的部分分开。

一般注释

它是从根本上困难的问题,以支持系统,用于自动修改上的各种配置文件的语法。完全覆盖目标文件的模板提供了有限制的通用方法。如果需要读取目标文件并对其原始内容进行有条件的修改,那么通用方法的复杂性就会增加。

考虑自动更改(手动编写)源代码,同时保持其可读性,并保证语义上正确的运行时间后,针对所有排名前10的编程语言。

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