尝试将 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”,放在同一任务定义的末尾)
...缺点:您必须手动提供“on_change”事件