关键是看到密码属性值直接写入/ etc/shadow文件。这是一个阅读影子和crypt的手册页,最后了解(希望)如何结合在一起。请参阅血腥细节下面,如果你有兴趣在一些背景。
如果您确定密码的MD5哈希值,请使用openssl命令生成加密的字符串。我使用的版本似乎不支持SHA算法。使用openssl passwd --help查看哪些选项可供您使用。
openssl passwd -1 -salt "yoursaltphrase"
Password: <enter the password>
$1$yoursalt$fIque2U6AZ.YRAqOu5Eyo/
现在使用的配方的密码属性,该属性字符串:
user 'mytestuser' do
comment "Test User"
home "/home/mytestuser"
shell "/bin/bash"
supports :manage_home => true
password '$1$yoursalt$fIque2U6AZ.YRAqOu5Eyo/'
action :create
end
至于我,我结束了手动创建测试用户,然后从/ etc/shadow中复制的加密字符串作为配方的密码属性值。
从/ etc/shadow开始,mytestuser:之后的第二个字段是加密密码。
mytestuser:THIS_IS_THE_FIELD_YOU_WANT:16063:0:99999:7:::
见人的影子和人隐窝。
从手册页和各种用户论坛血淋淋的细节
凑合的东西放在一起,这是我所学到的。注意,术语加密这里实际上意味着散列,因为我不相信,密码其实是可以解密。
passwd命令加密用户的明文密码并将其写入/ etc/shadow。
/etc/shadow的条目包含的用户名和在各种格式中的一种的加密密码。 “crypt”的手册页描述了这些格式,请参阅NOTES部分。
加密值的格式如下:
$id$salt$encrypted
把它看成是具有两个部分:一个盐和实际加密的密码。
盐部分由两个部分组成:
- 可选ID前缀,其识别所使用的加密算法,并具有“$”作为前缀和后缀,例如“$ ID $”。
- salt值,它可以是最多16个字符,并终止于“$”,例如“saltvalue $”。该值用于计算加密的密码。它是一个随机字符串,每次生成密码都不相同。
的ID可以是以下中的一个,指示所使用的加密算法:
blank = DES (the default when no $id$ prefix is found)
1 = MD5
2a = Blowfish
5 = SHA-256
6 = SHA-512
的加密密码长度是基于所述加密算法固定:
DES = 8 characters
MD5 = 22 characters
SHA-256 = 43 characters
SHA-512 = 86 characters
Blowfish = ???
可以使用在OpenSSL的passwd文件命令生成各种密码哈希值。 它支持的选项:
-crypt DES-based standard Unix password algorithm (default)
-1 MD5-based password algorithm
-apr1 MD5-based password algorithm, Apache variant
-salt string use provided salt