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

标签 chef-infra root chef-solo

我正在使用 user cookbook ,这适用于所有其他用户帐户。

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

这是我的根用户数据包 (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
}

最佳答案

这可能是那本 Recipe 中的错误。

我会使用由 Seth Vargo 维护的“官方”社区 Recipe ( http://community.opscode.com/cookbooks/users ) 而不是那个。

郑重声明,我成功地使用了标准的user resource 来管理root 用户密码。考虑到敏感性,最好将根帐户与其他用户帐户分开处理。


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

  password_hash = ...

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

设置 SSH key 需要确保 /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

关于chef-infra - 使用 chef (solo) 如何设置 root 用户的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24784646/

相关文章:

apache - 在 Vagrant 盒子上创建虚拟主机

centos - 在 *UNIX 系统下,哪个命令可用于通过 chef-client 提取当前运行列表的 Recipe ?

Android - 在 4.2.2 (Nexus 10) 上显示/隐藏系统栏

linux - 在没有root权限的情况下在linux上阅读eeprom

chef-infra - 在 Chef Solo JSON 中使用属性

ruby - remote_file Chef 资源默认是幂等的吗?

linux - Bash 脚本在终端中运行良好,但在 Chef 中运行的相同脚本失败

ruby - 为什么 Chef 不逐行执行 Recipe ?

ruby-on-rails - Rails 根测试

ruby - 错误 : Cookbook loaded at path(s) has invalid metadata