Wie kann Puppet beim Erstellen eines Benutzers nur ein Passwort festlegen?

9

Ich möchte, dass Puppet kein Passwort verwaltet (dh es zurücksetzt, wenn es geändert wird), sondern das ursprüngliche Passwort festlegt, wenn Puppet den Benutzer erstellt.

Ich habe überlegt notify, eine ExecRessource zu erstellen, die das Kennwort festlegt. Dies wird jedoch ausgelöst, wenn eine von Puppet verwaltete Eigenschaft geändert wird (z. B. Gruppenmitgliedschaft, Basisverzeichnis usw.). Ich möchte das nicht.

Irgendwelche Ideen?

Belmin Fernandez
quelle

Antworten:

9

Puppet selbst unterstützt "Kennwort bei Benutzererstellung festlegen, aber nicht anders".

Eine Möglichkeit wäre, eine externe Authentifizierungsquelle wie LDAP einzurichten.

Eine andere Möglichkeit wäre Ihr sein , notifyum eine ExecIdee, aber die , die machen Execein wenig schlauer.

exec {
  "/usr/sbin/usermod -p '${password}' ${user}":
    onlyif => "/bin/egrep -q '^${user}:[*!]' /etc/shadow",
    require => User[$user];
}

Ich habe das nicht getestet, aber wenn Sie überprüfen, ob das Kennwort nicht in der ExecRessource festgelegt wurde, sollten Sie das gewünschte Ergebnis erhalten. Ich denke, so eingerichtet, das notify/ refreshonlyZeug ist nicht notwendig, würde aber wahrscheinlich nicht schaden.

freiheit
quelle
1
Ich habe einige Computer gesehen, die !für das Nicht-Passwort-Set verwendet werden. In diesem Fall egrep -q '^${user}:[*!]:' /etc/shadowfunktioniert es besser.
leedm777
1
Für RHEL / Cent: egrep '^${username}:!!:.*:' /etc/shadow
Rfelsburg
1
grep -Eq '^${user}:[*!]!?:' /etc/shadow"scheint am portabelsten zu sein und setzt Benutzer mit einem gesperrten Passwort nicht zurück.
CodeGnome