Uživatelé Linuxu mají svá hesla uložena jako hash v souboru /etc/shadow. Puppet předá heslo zadané v definici typu uživatele v souboru /etc/shadow.
Vygenerujte své hash heslo pomocí příkazu openssl:
#openssl passwd -1
#Enter your password here
Password:
Verifying - Password:
$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM
Předchozí příklad vygeneruje tento hash:$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM/
Přidejte toto hash heslo do vaší třídy, jak je uvedeno (nezapomeňte na uvozovky)
user { 'test_user':
ensure => present,
password => '$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM/',
}
sha1
funkce v puppet není přímo určena pro vstupy passwd, jak jste zjistili. Řekl bych, že nastavení hash spíše než heslo je dobrá praxe! Ve skutečnosti byste stejně neměli být schopni obnovit heslo - můžete ho vygenerovat jednou, nebo si ho můžete nechat vygenerovat pokaždé loutkou - vygenerování toho hashe jednou by IMHO mělo stačit...Heslo si můžete vygenerovat na Debian/Ubuntu takhle:
pwgen -s -1 | mkpasswd -m sha-512 -s
...na CentOS můžete místo mkpasswd použít nějaký příkaz grub-crypt...
Balíček stdlib puppetlabs implementuje podobný pw_hash
funkce přijaté odpovědi.
Nezapomeňte knihovnu přidat do své konfigurace. Pokud používáte knihovníka, přidejte svůj Puppetfile
mod 'puppetlabs-stdlib'
Poté pro vytvoření uživatele jednoduše:
user { 'user':
ensure => present,
password => pw_hash('password', 'SHA-512', 'mysalt'),
}
Měl jsem úspěch (podstata) s rubyovou metodou String#crypt z funkce Puppet parser.
AFAICS používá funkce crypt libc (viz:info crypt
) a má stejné argumenty $n$[rounds=<m>$]salt
, kde n je hašovací funkce (6 $ pro SHA-512) a m je počet kol na posílení klíče (ve výchozím nastavení 5000).