linux - 在 puppet 中管理 linux 的用户密码

标签 linux puppet

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

我读过 puppet 不能以通用的跨平台方式管理用户密码,这很遗憾。
我正在为 Red Hat Enterprise Linux Server 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',
}

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

如何修改第一个示例使其工作(使用 puppet 文件中的明文密码)?

P.S.:我知道我应该使用 LDAP、sshkeys 或其他东西,而不是在 puppet 文件中硬编码用户密码。但是,我这样做只是为了运行 puppet vagrant 测试,因此可以对用户密码进行硬编码。

最佳答案

I had success (gist)在 Puppet 解析器函数中使用 ruby​​ 的 String#crypt 方法。

AFAICS 它使用 crypt libc 函数(参见: info crypt ),并采用相同的参数 $n$[rounds=<m>$]salt ,其中 n 是散列函数(SHA-512 为 6 美元),m 是 key 强化轮数(默认为 5000)。

关于linux - 在 puppet 中管理 linux 的用户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19114328/

相关文章:

linux - 根据分隔符将一个文件拆分为多个文件

.net - 使用 FTPWebRequest 列出文件时出现问题

linux - 在远程 ubuntu 机器上执行 bash 命令时出错 "no tty present and no askpass program specified"

c - 分块读取标准输入...(可能使用 scanf?)

puppet - 为什么 puppet 找不到我的类(class)?

mocking - 如何在 Rspec-Puppet 中模拟自定义类型

linux - 无法从同一 LAN 上的 Linux 计算机 ping Windows 7 计算机

Puppet 如何判断变量是否已设置

build - 如何从源代码本地构建和安装 Puppet 模块?

ubuntu - 为什么 puppet 无法启动 Dropbox 守护进程?