Passwort für einen Benutzer auf einem Linux-Server vergessen: Wie wird es zurückgesetzt?

17

Auf einem Server hat ein Benutzer 16040 sein Passwort verloren. Ich habe ein Passwort für root, aber kein Passwort für Benutzer 16040. Wie kann ich sein Passwort zurücksetzen?

Mit passwd 16040frage mich Unix nach dem aktuellen Passwort, das ich nicht habe. Gibt es einen Befehl zum Zurücksetzen eines Benutzerpassworts ohne aktuelles Passwort?

passwd 16040
Changing password for 16040.
Current password for [email protected]:
Catanzaro
quelle

Antworten:

24

Wenn Sie passwd 16040als root ausgeführt werden, werden Sie nicht nach dem aktuellen Passwort gefragt.

Nach dem Ändern des Kennworts sollten Sie über die Ausgabe nachdenken chage -d 0 16040. Hiermit wird das Datum der letzten Änderung des Kennworts in der Vergangenheit festgelegt. Angenommen, die Kennwörter laufen auf Ihrem System ab. Dadurch wird der Benutzer gezwungen, das Kennwort nach dem Anmelden zu ändern. Auf diese Weise können Sie ein Kennwort auswählen, das nur ihm bekannt ist.

Artur Szymczak
quelle
3

Sie sollten passwd 16040als root sudo passwd 16040angeben ( wenn sich Ihr Benutzer in der sudoers-Datei befindet), um sein / ihr Passwort zu ändern. Es wird Sie nicht nach dem aktuellen fragen.

Wenn Sie physischen Zugriff auf die Box haben, können Sie init=/bin/bashals Kernel-Parameter anhängen , um Root-Zugriff zu erhalten, und dann ausgeben passwd 16040.

peperunas
quelle
3
Eine Eingabeaufforderung in Inline-Befehlen zu haben, ist ziemlich rätselhaft und kann leicht als Teil des Befehls fehlinterpretiert werden. Bitte verwenden Sie Eingabeaufforderungen nur in Anführungszeichen. Darüber hinaus # >ist eher unüblich und hier >lädt einfach als Teil des Befehls falsch interpretiert werden - gängige Praxis ist eine einfache Verwendung #für root-shells und $für Nicht-Root diejenigen.
Andreas Wiese
Sie haben Recht, ich habe meine Antwort der Klarheit halber überarbeitet. Vielen Dank.
Peperunas
1

Wenn Sie sich nicht direkt als Root anmelden können, können Sie es versuchen

  • sudo /usr/bin/passwd 16040.
  • sudo -i und danach /usr/bin/passwd 16040

Ich gehe davon aus, dass passwdsich das in / usr / bin befindet (Sie können dies mit dem Befehl überprüfen which passwd)

Hastur
quelle
sudo bashDas Starten einer rootShell ist (obwohl allgemein üblich) eine wirklich sehr, sehr schlechte sudoÜbung. Es ist sudo -soder sudo -i(Nicht-Login bzw. Login-Shell). Dies ehrt sogar Ihre Standard-Shell, /etc/passwdohne sich selbst darum kümmern zu müssen. Außerdem bashist es für sich genommen eine schlechte Idee , keinen vollständigen Pfad anzugeben, da dies eine der ersten gefälschten Binärdateien ist, in die ein böswilliger Benutzer irgendwo hineingesteckt wird $PATH.
Andreas Wiese
Ich bin mit der vollständigen Pfadangabe und der Verwendung von einverstanden sudo -iund habe daher die Antwort geändert. Wenn Sie jedoch von der Sicherheit und der Möglichkeit eines in der $PATHmöglicherweise verborgenen Trojaners sprechen, ist es besser, die Verwendung zu vermeiden, sudo -sda Sie zumindest die hinzufügen $USER/binVerzeichnis und alle Alias, die Sie sich vorstellen können ... :-)
Hastur
Das ist in der Tat ein guter Punkt, hängt jedoch von der sudoKonfiguration ab: In der Standardkonfiguration, die mit ausgeliefert sudowird, wird der $HOMEVariablensatz nicht beibehalten, sodass Sie am Ende Ihre eigenen RC-Dateien haben, nicht die Ihrer $SUDO_USER.
Andreas Wiese