0

我正在使用 chef-solo 和 vagrant

Chef 默认对所有内容都使用 root。我只想将 root 用于几件事,但将功能用户用于其他所有事情。

我基本上将一些软件包安装到标准位置(应该以 root 身份完成)。然后,我将一堆东西编译到非标准位置。我希望这整棵树归非 root 用户/组所有。我可以将默认用户/组设置为属性吗?

更广泛地说,为什么 chef 想要充当 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我想我需要仔细看看,也许是在执行环境属性:http ://wiki.opscode.com/display/chef/Resources#Resources-Execute

4

1 回答 1

1

大多数厨师资源采用用户(或所有者)和组属性来更改默认值。您可以创建目录,将所有者、组和模式设置为任何内容,您可以以非 root 用户身份执行(编译?)。

检查您为这些属性使用的资源。可以将用户名存储在属性或环境中,然后在配方资源块中使用这些值作为用户来运行命令或创建资源。

默认资源的一个很好的参考:https ://docs.chef.io/resource_directory.html

IE

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

如果有什么具体的动作你想不通,就指出来。

于 2012-12-28T23:34:59.007 回答