我正在使用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
}
答案 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"