Linux-Benutzer haben ihre Passwörter als Hash in der Datei /etc/shadow gespeichert. Puppet übergibt das in der Benutzertypdefinition angegebene Passwort in der Datei /etc/shadow.
Generieren Sie Ihr Hash-Passwort mit dem openssl-Befehl:
#openssl passwd -1
#Enter your password here
Password:
Verifying - Password:
$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM
Das vorherige Beispiel generiert diesen Hash:$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM/
Fügen Sie dieses Hash-Passwort wie gezeigt zu Ihrer Klasse hinzu (vergessen Sie die Anführungszeichen nicht)
user { 'test_user':
ensure => present,
password => '$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM/',
}
Der sha1
Die Funktion in Puppet ist nicht direkt für Passwd-Einträge gedacht, wie Sie herausgefunden haben. Ich würde sagen, das Festlegen des Hashs anstelle des Passworts ist eine gute Übung! Sie sollten sowieso nicht in der Lage sein, ein Passwort wiederherzustellen - Sie können es einmal generieren, oder Sie können es jedes Mal von Puppet generieren lassen - das einmalige Generieren dieses Hashs sollte meiner Meinung nach ausreichen ... Sie können ein Passwort unter Debian / Ubuntu generieren so:
pwgen -s -1 | mkpasswd -m sha-512 -s
...unter CentOS können Sie statt mkpasswd einen grub-crypt-Befehl verwenden...
Das stdlib-Paket von puppetlabs implementiert einen ähnlichen pw_hash
Funktion der angenommenen Antwort.
Stellen Sie sicher, dass Sie die Bibliothek zu Ihrer Konfiguration hinzufügen. Wenn Sie Bibliothekar verwenden, fügen Sie einfach Ihren Puppetfile
hinzu
mod 'puppetlabs-stdlib'
Um dann einen Benutzer zu erstellen, einfach:
user { 'user':
ensure => present,
password => pw_hash('password', 'SHA-512', 'mysalt'),
}
Ich hatte Erfolg (im Wesentlichen) mit Rubys String#crypt-Methode innerhalb einer Puppet-Parser-Funktion.
AFAICS verwendet die crypt-libc-Funktionen (siehe:info crypt
) und verwendet dieselben Argumente $n$[rounds=<m>$]salt
, wobei n die Hashing-Funktion ist ($6 für SHA-512) und m die Anzahl der Schlüsselverstärkungsrunden ist (standardmäßig 5000).