2012-06-28 19 views
5

Ich bin auf der Suche nach einer Möglichkeit, das Passwort eines Root-Benutzers auf einem Linux-System durch eine Bash-Skript ändern, ohne das System zu booten. Die einzigen Dinge, die ich bisher gefunden habe, sind entweder das Passwort zu entfernen oder eine Chroot zu verwenden, die ich lieber nicht verwende.
Ich weiß, wie das root-Passwort zu leeren, aber ich muss es zu einem anderen Passwort ändern, das zuvor im Skript definiert wurde.
Ich habe Root-Zugriff auf das gesamte Dateisystem.
Das System verwendet Shadow-Passwörter, gibt es eine Möglichkeit, ein verschlüsseltes Shadow-Passwort zu generieren, ohne sich einzuloggen/zu chrooten?
Gibt es noch andere Möglichkeiten, das root-Passwort vom Skript zu ändern?Ändern root-Passwort von Skript

+1

Einige Ratschläge [hier] (http://mywiki.wooledge.org/BashFAQ/078). Es gibt Wege. Es hängt von der Plattform ab. – ormaaj

+0

Danke für die Antwort. Dies könnte tatsächlich die Lösung sein. Ich wusste nicht, dass Debian einen mkpasswd Befehl hatte, werde das versuchen und zurückmelden. – SharkWipf

Antwort

8

Der Passwort-Hash ist in /etc/shadow. Sie können es einfach durch einen generierten (gesalzenen) Hash ersetzen. Das Format für den Passwort-Hash ist in crypt (3) beschrieben. Der Standardwert ist DIE, aber auf glibc2 Systemen kann es eine von mehreren verschiedenen Verschlüsselungsmethoden enthält:

ID | Method 
--------------------------------------------------------- 
1 | MD5 
2a | Blowfish (not in mainline glibc; added in some 
    | Linux distributions) 
5 | SHA-256 (since glibc 2.7) 
6 | SHA-512 (since glibc 2.7) 

So ein Schatten Passwort-String könnte wie folgt aussehen: $5$saltysalt$KhboodWTnuXJ5siXvWx5mxYXbnuNJOxROfD1inCILfD

In diesem Fall ist der erste $ 5 $ Teil gibt an, dass es sich um einen SHA-256-Hash handelt, der mittlere Teil ist das Salz und der Rest ist der tatsächliche Hash.

eine zu erzeugen, am besten das Systems der Krypta verwenden (3) Funktion, zum Beispiel mit einem minimalen C-Programm:

#include <stdio.h> 
#include <crypt.h> 

int main(int argc, char *argv[]) { 
     printf("%s\n", crypt(argv[1], argv[2])); 
} 

Compile mit cc mkpass.c -o mkpass -lcrypt und dann mit dem Klartext-Passwort und Salz Zeichenfolge ausführt eine Zeichenfolge zu erzeugen, Sie können in /etc/shadow setzen:

./mkpass yourpassword yoursalt     # DES (default) 
./mkpass yourpassword '$6$yoursalt$encrypted' # SHA-512 (quote your $) 

Die zweite Form nicht auf älteren Linux-Systemen unterstützt werden. Sehen Sie sich die vorhandene Zeichenfolge in Ihrer Shadow-Datei am besten an und verwenden Sie den gleichen Hash-Typ (aus der $ ID $ -Liste oben).

+0

Das hat einwandfrei funktioniert, danke! – SharkWipf

-1

Drücken Sie e auf der Ubuntu-Registerkarte im OS-Auswahlmenü Bildschirm. den Befehl Aktualisieren als

rw init=/bin/bash 

folgenden Es wird Sie den Linux-Root-Shell fallen. Ändern Sie Ihr root-Passwort, indem Sie einfach den Befehl passwd root eingeben.

Verwandte Themen