Gli utenti Linux hanno le loro password memorizzate come hash nel file /etc/shadow. Puppet passa la password fornita nella definizione del tipo di utente nel file /etc/shadow.
Genera la tua password hash usando il comando openssl:
#openssl passwd -1
#Enter your password here
Password:
Verifying - Password:
$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM
L'esempio precedente genera questo hash:$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM/
Aggiungi questa password hash alla tua classe come mostrato (non dimenticare le virgolette)
user { 'test_user':
ensure => present,
password => '$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM/',
}
Il sha1
La funzione in marionetta non è destinata direttamente alle voci passwd, come hai capito. Direi che impostare l'hash anziché la password è una buona pratica! Non dovresti comunque essere in grado di recuperare una password - puoi generarla una volta, oppure puoi fare in modo che il burattino la generi ogni volta - generare quell'hash una volta dovrebbe essere sufficiente IMHO... Puoi generare una password su Debian/Ubuntu come questo:
pwgen -s -1 | mkpasswd -m sha-512 -s
...su CentOS puoi usare qualche comando grub-crypt invece di mkpasswd...
Il pacchetto stdlib di pupazzolabs implementa un pw_hash
simile funzione della risposta accettata.
Assicurati di aggiungere la libreria alla tua configurazione. Se usi il bibliotecario, aggiungi semplicemente il tuo Puppetfile
mod 'puppetlabs-stdlib'
Quindi per creare un utente, semplicemente :
user { 'user':
ensure => present,
password => pw_hash('password', 'SHA-512', 'mysalt'),
}
Ho avuto successo (essenza) con il metodo String#crypt di Ruby dall'interno di una funzione Puppet parser.
AFAICS sta usando le funzioni crypt libc (vedi:info crypt
), e accetta gli stessi argomenti $n$[rounds=<m>$]salt
, dove n è la funzione di hashing ($ 6 per SHA-512) e m è il numero di round di rafforzamento della chiave (5000 per impostazione predefinita).