Ändern Sie das Passwort eines Benutzers in / etc / shadow

9

Ich möchte das Passwort eines Benutzers in der ändern /etc/shadow. Ich kann keine Programme zum Ändern von Passwörtern wie verwenden passwd. Dies muss durch Bearbeiten der erfolgen /etc/shadow. Das /etc/shadowist auf einer montierten Festplatte und Chroot funktioniert nicht.

Zum Beispiel:

root:$asdf.1AH.MJ3sivd4$YFoFnasdf4cZW9H6G6cbT4.1VBmasdfmv.a0wCU/i3zEFasdfasdf4W.:15843:0:99999:7:::
otheruser:$asdf.1AH.MJ3sivd4$YFoFnasdf4cZW9H6G6cbT4.1VBmasdfmv.a0wCU/i3zEFasdfasdf4W.:15843:0:99999:7:::

Kann jemand mir ein Shell - Skript geben Sie das Passwort von root mit ändern sedoder awkoder so etwas?

John Smithv1
quelle
2
Warum können Sie aus Neugier keine Tools zum Ändern von Passwörtern verwenden?
Bratchley

Antworten:

12

Sie können dazu das Tool mkpasswd verwenden. Es gibt eine gute Einführung in die Verwendung auf cyberciti.biz mit dem Titel: Linux / UNIX: Generieren eines zufälligen Passworts mit mkpasswd .

Beispiel

mkpasswd --char=10 --crypt-md5

Das Paket wird normalerweise aufgerufen makepasswd, aber das Tool wird normalerweise aufgerufen mkpasswd.

Weitere Informationen finden Sie in der Manpage .

Inhalte /etc/shadowdirekt generieren

Der folgende Python-Befehl generiert den Teil, der in die /etc/shadowDatei aufgenommen wird:

Python

$ python -c "import crypt, getpass, pwd; \
         print crypt.crypt('password', '\$6\$SALTsalt\$')"

Perl

$ perl -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'

Welches erzeugt die folgende Ausgabe:

$6$SALTsalt$UiZikbV3VeeBPsg8./Q5DAfq9aj7CVZMDU6ffBiBLgUEpxv7LMXKbcZ9JSZnYDrZQftdG319XkbLVMvWcF/Vr/

Ändern des / etc / shadow

Hier ist ein Befehl, der den vorhandenen Eintrag mit dem neu generierten Kennwortfeld aus dem obigen Befehl ändert.

perl -pe 's|(root):(\$.*?:)|\1:\$6\$SALTsalt\$UiZikbV3VeeBPsg8./Q5DAfq9aj7CVZMDU6ffBiBLgUEpxv7LMXKbcZ9JSZnYDrZQftdG319XkbLVMvWcF/Vr/:|' /etc/shadow > /etc/shadow.new

HINWEIS: Dies ist ein grobes Beispiel, funktioniert aber. Sie müssen die Ergebnisse aus dem Befehl entnehmen, der das Hash-Passwort generiert hat, und die Dollarzeichen ($) mit Schrägstrichen (\ $) maskieren.

Die Ergebnisse werden in einer neuen Datei /etc/shadow.new gespeichert. Sobald Sie die Ergebnisse bestätigt haben, können Sie sie durch /etc/shadowdie neue Datei ersetzen /etc/shadow.new.

slm
quelle
Vielen Dank, aber ich benötige einen Befehl, um die Zeichenfolge in der Schattendatei zu bearbeiten.
John Smithv1
Sehen Sie meine Updates, ist es das, wonach Sie suchen?
slm
Hallo, können Sie mir auch einen Befehl geben, um das vorhandene Kennwort eines Benutzers in der Datei / etc / shadow durch das generierte Kennwort zu ersetzen?
John Smithv1
1
Warum können Sie keine Passwortänderungsprogramme verwenden? @JoelDavis hat die Frage auch als Kommentar zu Ihrer Frage gestellt. Nur neugierig.
slm
@slm, in meinem Fall möchte ich mich nicht auf dem Computer des Benutzers anmelden und nichts in dessen historyoder lastProtokollen belassen.
Qian Chen
1

Die einfachste Lösung, wenn ein leeres Kennwort für Sie kein Problem darstellt, besteht darin, die Datei / etc / passwd und nicht die Datei / etc / shadow zu ändern.

Eine Beispielzeile der Datei / etc / passwd lautet:

root: x: 0: 0: root: / root: / bin / bash

Das 'x' in dieser Zeile bedeutet, dass das Passwort tatsächlich gehasht in der Schattendatei gespeichert ist. Eine Sache, die Sie tun können, ist, es einfach so zu entfernen:

root :: 0: 0: root: / root: / bin / bash

Dann können Sie sich tatsächlich mit dem Benutzernamen root und mit einem leeren Passwort anmelden.

Ich hoffe, das hilft

VGe0rge
quelle
0

Entfernen Sie das Kennwort für den Benutzer in / etc / shadow, starten Sie das System, melden Sie sich ohne Kennwort an und verwenden Sie den Befehl passwd. Wenn möglich, bringen Sie das System erst dann in das Netzwerk, wenn dies abgeschlossen ist.

Andrew B.
quelle
2
Durch das Entfernen des Kennwort-Hash /etc/shadowwird verhindert, dass sich der Benutzer mit einem Kennwort anmeldet, da nichts, was Sie eingeben, zu einem Hash führen kann, der mit der leeren Zeichenfolge übereinstimmt.
n.st
2
@ n.st Dieser Rat scheint mir gültig zu sein. Siehe diesen Beitrag: stackoverflow.com/a/11700775/870150
Alex
1
Auch scheint der Rat unter askubuntu.com/a/84697/178596
Wilf