一尘不染

在puppet中管理Linux的用户密码

linux

我需要使用p创建一个具有密码的测试用户。

我读过,木偶无法以通用的跨平台方式管理用户密码,这很遗憾。我这样做是针对Red Hat Enterprise Linux Server 6.3版。

我做如下:

user { 'test_user': 
  ensure   => present,
  password => sha1('hello'),
}

puppet更新了用户密码,但是Linux表示我尝试登录时login / pwd不正确。

如果我在Linux中使用手动设置了密码sudo passwd test_user,然后查看/etc/shadow并在puppet中对该值进行了硬编码,那么它将起作用(我可以登录)。就像是:

user { 'test_user': 
  ensure   => present,
  password => '$1$zi13KdCr$zJvdWm5h552P8b34AjxO11',
}

我也尝试过$1$在前面添加sha1('hello'),但是它也不起作用(请注意,$1$代表sha1)。

如何修改第一个示例以使其起作用(使用人偶文件中的纯文本密码)?

PS:我知道我应该使用LDAP或sshkeys或其他方式,而不是硬编码人偶文件中的用户密码。但是,我这样做仅是为了运行木偶游民测试,因此可以对用户密码进行硬编码。


阅读 265

收藏
2020-06-03

共1个答案

一尘不染

在Puppet解析器函数中使用ruby的String#crypt方法获得了成功(要点)

在AFAICS中,它使用的是crypt libc函数(请参见:)info crypt,并采用相同的参数$n$[rounds=<m>$]salt,其中n是哈希函数(对于SHA-512,为$
6),而m是密钥加强回合的次数(默认为5000)。

2020-06-03