我正在使用厨师独奏与流浪汉
Chef默认为root用户。我想只使用root用于一些事情,但是将功能用户用于其他所有事情。
我基本上是将一些软件包安装到标准位置(应该以root身份完成)。 然后,我正在将一堆东西编译到非标准位置。我希望整个树都归非root用户/组所有。我可以将默认用户/组设置为属性吗?
更广泛地说,为什么厨师想要以root身份行事?为什么将默认用户更改为非root用户而不是更常见的请求?
具体来说,bash
资源可以占用用户,但这不是用户的完整登录。因此,主目录仍然是root的主目录(用户无法写入),创建的文件组仍然是root。所以,
bash "foo" do
user node[:globals][:username]
code <<-EOH
# do stuff
EOH
end
do stuff
不是用户的完整登录信息。
这个问题与https://serverfault.com/questions/402881/execute-as-vagrant-user-not-root-with-chef-solo有关,而那里提到的错误是无法修复的:http://tickets.opscode.com/browse/CHEF-1523我想我需要仔细观察,也许在环境属性中执行:{{3 }}
答案 0 :(得分:1)
大多数主厨资源都会使用用户(或所有者)和组属性来更改默认值。您可以创建目录,将所有者,组和模式设置为任何内容,您可以作为非root用户执行(编译?)。
检查您使用这些属性的资源。可以在属性或环境中存储用户名,然后在配方资源块中使用这些值作为用户运行命令或创建资源。
默认资源的良好参考:https://docs.chef.io/resource_directory.html
即
directory '/tmp/what?' do
owner node[:username]
group node[:group]
mode 00755
end
或
execute 'gcc somefile.cc' do
user node[:user]
group node[:group]
end
如果您无法弄清楚具体行动,请指出。