如何使用 REX 配置管理分发 sudoers 文件

如何使用 REX 配置管理分发 sudoers 文件

当尝试将 sudoers 文件推送到其他机器时,rexcm 任务/命令会卡住。

问题是(在我看来),sudoers 文件在写入时归 rex 用户所有,并且设置了“其他”权限,这导致“sudo”失败(导致破坏 Rexfile 中的“sudo TRUE”):

mySrv:/etc# ls -l sudoers.d/                                                                                                                                                                          
-rw-rw-r--   1 rexuser rexuser   72 Jul 25 07:49 sudoersFile

我尝试从源和模板分发文件。

file "/etc/sudoers.d/sudoersFile",                                   
        #source => "files/sudoers.d/sudoersFile",                    
        owner=>"root", group=>"root", mode => "600",                    
        content => template("templates/sudoers.d/sudoersFile.tpl"),  
        on_change => sub{                                               
                say "file sudoersFile transfered";                   
        };                                                              

}; 

问题:使用 rex 配置管理分发 sudoers 文件的正确方法是什么(或者:是否存在)?



更新/解决方法:
(感谢 #rex@freenode 的“xq”)

  • 将文件复制到远程系统上的临时位置(与上面相同的代码,但路径不同)
  • 将文件移动/复制到“/etc”(“mv”的 rex 命令是“重命名”,放在相同任务定义的末尾)

    rename("$tmpDir/sudoers.d/sudoersFile", "/etc/sudoers.d/sudoersFile");
    

    ...缺点:你必须手动提供“on_change”事件

答案1

仅使用问题中提到的解决方法来回答问题,因为一年内没有新的启示:

(感谢 #rex@freenode 的“xq”)

  • 将文件复制到远程系统上的临时位置(与上面相同的代码,但路径不同)
  • 将文件移动/复制到“/etc”(rex/perl 命令中的“mv”是“重命名”,放在相同任务定义的末尾)

    rename("$tmpDir/sudoers.d/sudoersFile", "/etc/sudoers.d/sudoersFile");
    

    ...缺点:你必须手动提供“on_change”事件

相关内容