0

我使用 Chef with kitchen (1.5.0) 和 vagrant (1.8.1) 来管理用户与新服务器的一致性。我的用户食谱如下所示:

include_recipe "users"

group 'sudo'

password_secret = Chef::EncryptedDataBagItem.load_secret(node['enterprise_sp']['secret_file'])

jays_password = Chef::EncryptedDataBagItem.load('user_secrets','jgodse', password_secret)['password']
shadow_password = `openssl passwd -1 -salt xyz #{jays_password}`.strip

user 'jgodse' do
  action :create
  group 'sudo'
  system true
  shell '/bin/bash'
  home '/home/jgodse'
  manage_home true
  password shadow_password  #added to /etc/shadow when chef runs
end

未加密的数据包是我明文配置密码的地方。然后我用刀命令 加密了数据包。

这行得通,但这似乎是解决设置密码问题的一种非常肮脏的方法。我必须这样做,因为用户块的密码指令只接受影子密码,并且只能通过使用openssl命令生成。

有没有一种更简洁的方法来获取影子密码,而无需使用生成密码的openssl命令?

4

2 回答 2

3

至少预先计算密码哈希并将其放入数据包中。

请参阅https://github.com/chef-cookbooks/users获取灵感。

于 2016-04-13T23:56:07.893 回答
3

您根本不应该存储密码,只需事先对其进行哈希处理并将哈希值放入数据包中。同样使用这样的加密数据包是可怕的不安全,请花点时间熟悉Chef的加密工具的威胁模型,不是这样。

于 2016-04-13T19:14:26.613 回答