Perl

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

  • April 16, 2020

嘗試將 sudoers 文件推送到其他機器時,rexcm 任務/命令會卡住。

問題是(在我看來),sudoers 文件在寫入時歸 rex 使用者所有,並且設置了“其他”權限,導致“sudo”失敗的原因(導致在雷克斯文件):

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”,放在同一任務定義的末尾)
rename("$tmpDir/sudoers.d/sudoersFile", "/etc/sudoers.d/sudoersFile");

…缺點:您必須手動提供“on_change”事件

只是用問題中提到的解決方法來回答問題,因為一年中沒有新的啟示:

(感謝來自#rex@freenode 的“xq”)

  • 將文件複製到遠端系統上的臨時位置(與上面的程式碼相同,但路徑不同)
  • 將文件移動/複製到“/etc”(“mv”的 rex/perl 命令是“rename”,放在同一任務定義的末尾)
rename("$tmpDir/sudoers.d/sudoersFile", "/etc/sudoers.d/sudoersFile");

…缺點:您必須手動提供“on_change”事件

引用自:https://serverfault.com/questions/923386