2014-03-13 31 views
11

我正尝试使用Chef 11创建一个用户帐户,但不知道如何计算密码属性的值。我已阅读用户资源文档http://docs.opscode.com/resource_user.html,特别是“密码影子哈希”部分,我仍然不确定要做什么。如何确定Chef“user”资源的密码属性值?

该用户正在一个Ubuntu系统上创建的,所以我用他们所提供的OpenSSL的示例并传递命令的输出作为密码属性值?

openssl passwd -1 "theplaintextpassword" 

但是,每次运行命令时,输出都不一样。它也支持各种选项(-crypt,-1,-apr1),那我该用哪一个?

我一直在看unix passwd命令的帮助,它表示它加密的值,但不表示它使用哪种方法。阴影和地穴的帮助也没有消散任何光线。

对于这个例子,数据包是矫枉过正的,我有一个我想用于这个账户的值,并且只是想用password属性来指定它。

这里的用户资源部分:

user 'mytestuser' do 
    comment "Test User" 
    home "/home/mytestuser" 
    shell "/bin/bash" 
    supports :manage_home => true 

    password "what goes here?" 

    action :create 
end 

更新:

我发现您指定密码字符串属性被直接写入用户的/ etc/shadow中条目。我想剩下的问题是确定该文件预期的值,以及它与配置用户密码的关系。

回答

17

关键是看到密码属性值直接写入/ 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 

把它看成是具有两个部分:一个盐和实际加密的密码。

盐部分由两个部分组成:

  1. 可选ID前缀,其识别所使用的加密算法,并具有“$”作为前缀和后缀,例如“$ ID $”。
  2. 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