Puppet

手動設置 MD5 雜湊後使用者無法登錄

  • July 23, 2013

我正在使用 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()函式,該函式將為您生成完整的影子文件字元串。

引用自:https://serverfault.com/questions/525644