使用chef(solo)如何设置root用户的密码?

时间:2014-07-16 15:24:25

标签: chef root chef-solo

我正在使用user cookbook,这对所有其他用户帐户都有效。

我可以使用数据包中列出的密钥填充root用户的authorized_keys文件,但密码仍未设置。

以下是root用户的数据包(data_bags/users/root.json)的内容:

{
  "id": "root",
  "uid": 0,
  "home": "/root",
  "home_dir_mode": "0700",
  "password": "shadowpasswordhash",
  "ssh_keys": [
    "ssh-rsa averylongkey"    
  ],
  "ssh_keygen": false
}

2 个答案:

答案 0 :(得分:1)

这可能是该食谱中的一个错误。

我使用"官方"社区食谱(http://community.opscode.com/cookbooks/users)由Seth Vargo维护而不是那个。

为了记录,我成功使用标准user 资源来管理root用户密码。鉴于敏感性,与其他用户帐户分开处理root帐户可能更好。


例如,您可以使用内置的user资源设置root密码,如下所示:

  password_hash = ...

  user "Setting root password" do
    username 'root'
    password password_hash
    action :modify
  end

设置SSH密钥需要确保/root/.ssh/目录存在且具有正确的权限,然后创建包含公钥且具有正确权限的/root/.ssh/authorized_keys。像这样:

 public_key = ...

 directory "/root/.ssh" do
    owner "root"
    mode 0700
 end

 file "/root/.ssh/authorized_keys" do
    owner "root"
    mode "600"
    content public_key
 end

答案 1 :(得分:0)

要设置用户的影子密码,您需要将ruby-shadow gem提供给chef(默认情况下不安装)。这是在默认的user resource上记录的,其中链接的食谱仅仅是一个包装器。

为了安装gem,只需在设置用户之前将其添加到运行列表中包含的配方中:

chef_gem "ruby-shadow"