首先,我对编码和厨师都很陌生,所以如果我提出愚蠢的问题,请耐心等待。
如果用户不匹配,是否可以在配方中运行我的执行块。它只是一个简单的单行语句:chown -R aaa:aaa file / path。因此,如果文件/路径的所有者已经是aaa,请不要运行它。
如果我不清楚这个问题,我会道歉,我会尽力清理它。
非常感谢任何帮助。谢谢你的时间。
答案 0 :(得分:4)
所以另一个答案在技术上是正确的,但真正的方法是使用file
资源:
file 'file/path' do
owner 'aaa'
group 'aaa'
end
这已经是幂等的(对于#34;在内部不会改变已经很好的事情而言,这是一个奇特的词语。)
答案 1 :(得分:0)
您可以使用not_if
,如下所示:
require 'etc'
execute "chown file/path" do
command "chown -R aaa:aaa file/path"
not_if { Etc.getpwuid(File.stat("file/path").uid).name == "aaa" }
end
如果您还要检查该组,只需将其添加到条件中即可。
请注意,您的方法实际上并不是幂等的,因为该目录可能由aaa
拥有,但包含其他人的文件。最好总是在没有条件的情况下运行chown
,以便强制所有内容都aaa:aaa
。如果文件已经aaa:aaa
,则没有任何反应。