将默认用户和组从root更改为Chef中属性驱动的内容

时间:2012-12-28 23:01:16

标签: chef vagrant

我正在使用厨师独奏与流浪汉

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 }}

1 个答案:

答案 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

如果您无法弄清楚具体行动,请指出。