In der aktuellen Version von Raspian weiß ich, dass es möglich ist, das Passwort des aktuell angemeldeten Benutzers über die Befehlszeile wie folgt zu ändern:
sudo passwd
Dadurch wird der Benutzer aufgefordert, zweimal ein neues Kennwort einzugeben. Dies erzeugt eine Ausgabe wie folgt:
Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Ich habe mich gefragt, ob es eine Möglichkeit gibt, ein Passwort programmgesteuert zu ändern, beispielsweise aus einem Shell-Skript.
Ich versuche, ein Konfigurationsskript für die Bereitstellung auf meinem Raspberry Pis zu erstellen, und möchte nicht manuell neue Kennwörter für diese eingeben müssen.
sudo
. Wenn Sie verwendensudo
, können Sie jedem Benutzer ein neues Kennwort erzwingen, ohne das aktuelle Kennwort dieses Benutzers kennen zu müssen.expect(1)
könnte auch helfen.Antworten:
Sie suchen nach dem
chpasswd
Befehl. Sie würden so etwas tun:Beachten Sie, dass es zumindest mit der Standard-PAM-Konfiguration als root ausgeführt werden muss. Aber vermutlich als Root ausgeführt ist kein Problem für ein Systembereitstellungsskript.
Sie können auch mehrere Benutzer gleichzeitig ausführen, indem Sie mehrere Eingabezeilen eingeben.
quelle
Eine andere Alternative ist die Verwendung der
yes
Befehl in Ihrem Skript zu verwenden.Dies wird senden
newpassword
an denpasswd
Befehl für gesendetyouruser
.Es sollte erwähnt werden, dass das Festlegen / Ändern von Benutzerkennwörtern über Skripte Sicherheitsrisiken darstellen kann und nach Möglichkeit vermieden werden sollte.
BEARBEITEN:
Diese Antwort erfordert Root-Zugriff. Entschuldigung, dass Sie dies zuvor nicht erwähnt haben. Diese Methode verwende ich, wenn ich Verwaltungsaufgaben ausführe, für die Root-Zugriff erforderlich ist.
quelle
passwd
Lese vonstdin
eher als ein Terminal (Tastatur), wie kann das funktionieren , wennpasswd
Aufforderungen zunächst für einen alte Kennwort des Benutzers und dann Eingabeaufforderungen für die neuen?youruser
am Ende braucht ). Es könnte irgendwo funktionieren ...passwd
Befehl der Shadow-Dienstprogramme von Linux akzeptiert umgeleitete Eingaben (im Gegensatz zu zssh
. B. OpenSSH ). Die Verwendungyes
ist jedoch keine gute Idee: Sie stellt das Kennwort Snoopern zur Verfügung, die die Prozessliste zur falschen Zeit anzeigen. Die Verwendungecho
hätte diesen Fehler nicht, da es sich um eine eingebaute Shell handelt.