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

Chef infra 将默认用户和组从root更改为Chef中的something属性驱动,chef-infra,vagrant,Chef Infra,Vagrant,我在用厨师索洛和流浪汉 Chef默认为root for everything。我只想在一些方面使用root,但在其他方面使用函数用户 我基本上是将一些包安装到标准位置(应该作为root用户完成)。 然后,我把一堆东西编译到一个非标准的位置。我希望整个树归非root用户/组所有。我可以将默认用户/组设置为属性吗 更广泛地说,为什么chef希望充当root用户,为什么将默认用户更改为非root用户不是更常见的请求 具体来说,bash资源可以接收用户,但这不是用户的完全登录。因此,home dir仍然

我在用厨师索洛和流浪汉

Chef默认为root for everything。我只想在一些方面使用root,但在其他方面使用函数用户

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

更广泛地说,为什么chef希望充当root用户,为什么将默认用户更改为非root用户不是更常见的请求

具体来说,
bash
资源可以接收用户,但这不是用户的完全登录。因此,home dir仍然是root的home dir(用户无法写入),创建的文件组仍然是root。所以

bash "foo" do
  user node[:globals][:username]
  code <<-EOH
    # do stuff
  EOH
end
bash“foo”do
用户节点[:全局][:用户名]

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

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

默认资源的良好参考:


如果有一个特定的操作您无法理解,请指出。

那么
bash
资源呢?不确定您使用的是什么bash资源,但您可以使用script[1]运行bash脚本,并将脚本的用户指定为,如上所述。[1] 根据我的链接,bash提供了一个
user
attributeoh,所以它是一个完整的用户登录//snarkThis确保ruby将其解释为八进制模式。如果您只使用四位数字,而第一位数字不是零,ruby将以十进制形式读取数字。前导0表示八进制。您也可以使用0o0755,但令人困惑的是,对于八进制来说这不是必需的。(用于十六进制、0xNNN和二进制0bNNN)。只是那些红宝石怪癖中的一个。或者,您可以使用字符串ala“0755”甚至“755”
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