我需要使用puppet创建一个带有密码的测试用户。
我已经阅读过,Puppet无法以通用跨平台的方式管理用户密码,这真是遗憾。 我正在为Red Hat Enterprise Linux Server release 6.3做这件事。
我按照以下步骤操作:
user { 'test_user':
ensure => present,
password => sha1('hello'),
}
puppet更新了用户的密码,但当我尝试登录时,Linux显示登录/密码不正确。
如果我在Linux中使用sudo passwd test_user手动设置密码,然后查看/etc/shadow并在puppet中硬编码该值,则它可以正常工作(我可以登录)。类似这样做:
user { 'test_user':
ensure => present,
password => '$1$zi13KdCr$zJvdWm5h552P8b34AjxO11',
}
我也尝试通过在sha1('hello')
前面添加$1$
,但它也不起作用(注意,$1$
代表sha1)。
如何修改第一个示例以使其工作(使用puppet文件中的明文密码)?
附言:我知道我应该使用LDAP、sshkeys或其他东西,而不是在puppet文件中硬编码用户密码。然而,我只是为了运行puppet vagrant测试而这样做,所以在puppet文件中硬编码用户密码是可以的。
openssl passwd
生成的哈希值 - 我猜测sha1是错误的算法,但Puppet似乎没有提供任何其他哈希算法。 - xiankaipasswd
使用DES
进行密码加密(请参阅man crypt
)。 - Slava Semushin