Puppet
手動設置 MD5 雜湊後使用者無法登錄
我正在使用 Puppet 來管理使用者密碼。(是的,我知道 LDAP 更好,但是上級告訴我使用 Puppet。)我有這個類,當以 root 身份執行時,將 bob 的密碼更改為“bobs_new_password”。理想情況下,它應該在 bob 執行它時提示輸入新密碼,但我應該能夠在以後添加該功能。當我以 root 身份執行它時
puppet agent --test
,它說一切順利並通知我新的雜湊值,所以我知道它已在/etc/shadow
文件中正確設置。現在,我只在虛擬機上與測試使用者合作,所以我不擔心通知雜湊的安全風險;顯然,該行將被刪除用於程式碼的工作版本。我到目前為止是這樣的:class pwdchange ($newpwd = 'bobs_new_password', $targetuser = "bob") { $temp = inline_template("<%= Digest::MD5.digest(scope.lookupvar('newpwd'))%>") $hashtypeidentifier = '$1$' #'$1' for MD5, '$6' for sha512. user {"$targetuser": ensure => present, password => "${hashtypeidentifier}${temp}", } notify {"${temp}":} }
但是,當我以 bob 身份 ssh 進入 VM 時,既不接受舊密碼,也不接受新密碼。我究竟做錯了什麼?為什麼它不接受任何一個密碼,我該怎麼做才能修復它?
影子文件中的 MD5 密碼格式為
$1$salt$hash
,我在您的程式碼中看不到任何鹽分。另請參閱如何為 Ubuntu 10.04 生成 /etc/shadow 兼容密碼?
另請參閱 Ruby 的
crypt()
函式,該函式將為您生成完整的影子文件字元串。