Root-Passwort wiederherstellen

aus openSUSE, der freien Wissensdatenbank

Inhaltsverzeichnis

Root-Passwort setzen

Wenn Sie ihr Root-Passwort verloren oder vergessen haben, können Sie es eventuell mit den hier aufgeführten Methoden wiederherstellen. Allerdings sind einige Systeme auch durch Passwörter im Boot-Loader geschützt. Wenn dies der Fall ist, müssen Sie ihr System von einem anderen Medium wie einer openSUSE-CD/DVD/mini-boot-CD starten. Die Installations-CD von openSUSE ist dabei wahrscheinlich die beste Variante.

CD/DVD Wiederherstellungsmodus

Wenn Sie ein CD/DVD-Startmedium verwenden, müssen Sie dort das Rettungssystem/Rescue System starten. Sie gelangen dann automatisch in einen Root-Modus und müssen dort die Festplatte manuell einbinden (mounten). Ein Compaq-RAID-Controller wird wahrscheinlich /dev/ida/c0d0 sein, eine gewöhnliche Festplatte bspw. /dev/hda1 oder /dev/sda5. Drücken Sie in fdisk dann "p" und danach die Eingabetaste, um sie die Partitionstabelle anzeigen zu lassen und schließen Sie fdisk dann wieder, indem Sie "q" eingeben und abermals mit der Eingabetaste bestätigen. Binden Sie dann die von ihnen benötigte Partition ein:

Kommando|erde:~ # mount -o remount,rw /dev/sda2 /mnt

Wechseln Sie danach in das Verzeichnis in das Sie die Partition eingebunden haben und wechseln Sie dort dann mit chroot das Wurzeldateisystem. Wenn das geklappt hat können Sie einfach mit passwd ein neues Passwort festlegen.

# cd /mnt
# chroot /mnt
# passwd

Für openSUSE 10.3 sind einige Schritte mehr nötig.

Starten Sie das Rettungssystem und finden Sie die root-Partition. Wir gehen im Beispiel wieder von /dev/sda2 aus.

# mount /dev/sda2 /mnt
# mount -o bind /proc /mnt/proc
# mount -o bind /sys /mnt/sys
# mount -o bind /dev /mnt/dev
# chroot /mnt

Sie sind root im installierten System, mit allem was dazugehört: passwd, aber auch YaST...

"bind" erlaubt es, zwei Mount-Punkte für virtuelle Systemverzeichnisse zu nutzen.

Wenn alles fehlschlägt, stellen Sie sicher, dass Sie Zugriff auf dieses Laufwerk haben (oder installieren Sie ein anderes Laufwerk in ihrem Rechner) und binden Sie es von einem anderen laufenden Linux ein. Stellen Sie das Root-Passwort dann wie oben beschrieben wieder her.

Einzelbenutzermodus

Das erste, was man versuchen sollte, ist das System im Einzelbenutzermodus zu starten. Die KÖNNTE bei ihnen allerdings nicht funktionieren, weil ihr System so konfiguriert sein könnte, dass Sie auch dort immer noch nach einem Passwort gefragt werden. Wen dem so ist, versuchen wir einen anderen Kniff, indem wir init durch /bin/bash ersetzen.

Versuchen Sie aber zuerst den Einzelnutzermodus. Wenn Sie weder einen Boot-Bildschirm von LILO oder GRUB sehen, versuchen Sie STRG+X zu drücken, um einen zu erhalten. Wenn es LILO ist, geben Sie einfach linux single ein und es sollte gehen (davon ausgehend, dass "linux" das passende LILO-Label ist). Wenn es GRUB ist (was auf den allermeisten Distributionen von openSUSE der Fall sein sollte), drücken Sie "e", wählen Sie dann die Zeile "kernel", drücken Sie abermals "e" und fügen Sie " single" (oder einfach nur " 1") am ende der Zeile hinzu. Drücken Sie dann die Eingabetaste und danach "b" um zu booten. (Neuere Versionen von GRUB verwenden "a", um die Boot-Zeile anzufügen.)

Sie sollten nun einen weitestgehend normalen Startablauf verfolgen dürfen, mit der Ausnahme, dass er etwas früher an einer Bash-Eingabezeile endet. Wenn Sie nun die Meldung erhalten "Give root password for system maintenance", wird diese Variante bei ihnen nicht funktionieren, schauen Sie sich dann die "init oder /bin/bash" Version weiter unten an.

Wenn Sie die Eingabezeile erreichen, kann es sein, dass das Wurzeldateisystem (/) noch nicht mit Lese- und Schreibrechten eingebunden ist (rw) (auch wenn mount sagt, dass es das wäre). Binden Sie es deshalb erneut ein, diesmal auch mit Schreibrechten.

mount -o remount,rw /

Falls das nicht funktioniert (was sein könnte), starten Sie einfach nur mount um herauszufinden, welche Partition auf "/" eingebunden ist. Sagen wir, es ist auf /dev/sda2, dann geben Sie folgendes ein:

mount -o remount,rw /dev/sda2

Wenn das funktioniert hat, geben Sie einfach passwd ein und wechseln Sie das Passwort zu was Sie wollen. Oder bearbeiten Sie einfach /etc/shadow (dort werden die Passwörter verschlüsselt gespeichert) um das Passwortfeld zu entfernen: gehen Sie mit Eingabezeiger hinter den ersten ":" und entfernen Sie alles bis zum nächsten ":". Mit wie würde das wie folgt ablaufen:

  1. vi /etc/shadow
  2. Bewegen Sie den Eingabezeiger mit den Pfeiltasten an den Anfang der Zeile von root
  3. /: <Eingabetaste> um zum ersten Doppelpunkt zu gehen
  4. Leertaste drücken
  5. d/: <Eingabetaste> um alles bis zum nächsten Doppelpunkt zu löschen
  6. :wq! <Eingabetaste> um die Änderungen zu speichern und vi zu schließen

Sie erhalten dann eine Warnung, dass Sie eine nur-lesen-Datei ändern würden, was aber normal ist. Vor der Veränderung sollte ihre /etc/shadow etwa so aussehen:

root:$1$8NFmV6tr$rT.INHxDBWn1VvU5gjGzi/:12209:0:99999:7:-1:-1:1074970543
bin:*:12187:0:99999:7:::
daemon:*:12187:0:99999:7:::
adm:*:12187:0:99999:7:::

Nach dem Bearbeiten sollten die Zeilen etwa so aussehen:

root::12209:0:99999:7:-1:-1:1074970543
bin:*:12187:0:99999:7:::
daemon:*:12187:0:99999:7:::
adm:*:12187:0:99999:7:::

INIT- oder /bin/bash-Modus

Ein Anderer Trick besteht darin, in der Zeile für die Kernelparameter im Bootload init=/bin/bash (bei LILO linux init=/bin/bash) einzugeben. Damit gelangen Sie zu einer Bash-Kommandozeile weit vor dem Einzelbenutzermodus, wo wesentlich weniger initialisiert und eingebunden ist, usw. Sie müssen hier auf jeden Fall das Dateisystem wie oben mit "-o remount,rw" neu einbinden. Beachten Sie auch, dass noch keine anderen Dateisysteme eingebunden sind; Sie müssen sie gegebenenfalls noch von Hand einbinden. Schauen Sie sich die /etc/fstab an (bspw. mit cat /etc/fstab), um einen Überblick über die Gerätenamen zu erhalten.

Sie sollten sich dies hier auch merken, wenn Sie ein Linux-System an einem öffentlich zugänglichen Ort betreiben: ohne weitere Sicherungsmaßnahmen ist es nicht allzu schwer, ein verlorenes Root-Passwort wiederherzustellen, was wiederum aber auch heißt, dass es recht einfach für jemanden ist, es zu ÄNDERN oder ohne ihr Wissen auf root zuzugreifen..

Sie können das Passwort auch einfach aus der /etc/shadow entfernen. Bevor Sie das aber vermasseln, sollten Sie vorher eine Kopie der Datei an einem sicheren Ort anlegen. Nach der Bearbeitung sollte die root-Zeile etwa so aussehen:

Originalzeile (Bsp.):

root:$1$EYBTVZHP$QtjkCG768giXzPvW4HqB5/:12832:0:99999:7:::

Nach der Bearbeitung:

root::12832:0:99999:7:::

Wie Sie die Datei mit Vi bearbeiten können, erfahren Sie in der vorhergehenden Variante. Wenn Sie Schwierigkeiten mit der Bearbeitung haben (Sie sollten wirklich Vi lernen, oder zumindest einen anderen Editor verwenden ;-), können Sie einfach die komplette Datei mit folgendem Inhalt ersetzen (wobei Sie auf jeden Fall vorher eine Sicherungskopie anlegen sollten):

 echo  "root::12832:0:::::" > /mnt/etc/shadow 

Oder falls Sie es in den Einzelbenutzermodus geschafft haben:

 echo  "root::12832:0:::::" > /etc/shadow 

Nachdem Sie ihr System dann neugestartet haben, sollten Sie die Probleme, die Sie sich damit geschaffen haben, beheben. (Sie haben ja eine Sicherheitskopie, fügen Sie also deren Inhalt, bis auf die root-Zeile, in die verstümmelte Datei ein.)