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

我读到puppet无法以通用的跨平台方式管理用户密码,这很遗憾.

我的工作如下:

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

puppet更新用户的密码,

如果我在Linux中用sudo passwd test_user手动设置密码,然后查看puppet中的/etc/shadow和硬代码,它就可以工作(我可以登录).比如:

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

我也试着在sha1('hello')前面加上$1$

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

注意:我知道我应该使用LDAP、sshkeys或其他东西,而不是在puppet文件中硬编码用户密码.然而,我这样做只是为了运行一个puppet vagrant测试,所以可以硬编码用户密码.

推荐答案

在Puppet解析器函数中使用ruby的字符串#crypt方法.

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

Linux相关问答推荐

Flutter 构建错误:';DART:JS_interop';在此平台上不可用

Docker运行错误:exec/app/backend/server:没有这样的文件或目录

如何在 shell 脚本中自定义 SFTP 详细输出

命令行中使用`..`为什么会导致权限被拒绝错误?

使用awk命令将以:分隔的两个文件合并的方法

为什么控制台不接受反向换行?

如何从核心转储中获取线程名称?

使用 sed linux 命令和 i sed 命令进行 preprend 时的反向引用

如何判断 Linux 机器是否支持 AVX/AVX2 指令?

使用正则表达式时,Shell 'tar: not found in archive' 错误

Ubuntu 上 Java 应用程序中的丑陋字体

如何在 Ubuntu 12.04 中更改 Jenkins 安装的端口号

如何以另一个用户的身份使用 sudo 在 bash 子shell 中执行一系列命令?

php.ini 更改,但在 Ubuntu 上无效

zsh/bash 上不区分大小写的 Glob

为什么`du`的输出通常与`du -b`如此不同

从bash中的字符串中删除所有特殊字符和大小写

在linux中将制表符分隔的文件转换为csv的最快方法

libaio.so.1:无法打开共享对象文件

Bash:等待超时