Wer in die missliche Lage geriet, das root-Passwort eines RHEL- oder CentOS-Systems zurücksetzen zu müssen, konnte bis einschließlich Version 6 im Single User Modus booten. Dort war ein root-Login ohne Passwort möglich. Mit passwd
konnte dann ein neues root-Passwort eingestellt werden. Unter RHEL und CentOS 7 müssen nun aber neue Wege beschritten werden.
Der neue Rescue Modus
Der Single User Modus wurde in RHEL 7 im Zuge des Systemd-Umstiegs durch den Rescue Modus ersetzt (genau genommen durch das rescue.target
). In den Rescue Modus gelangen Sie, wenn Sie während des Hochfahrens mit E den Eintrag des GRUB-Menüs bearbeiten und dann bei der Zeile linux16
bzw. linuxefi
den Eintrag single
hinzufügen.
Anschließend verlassen Sie Grub mit Strg+X und starten CentOS. Nach einigen Sekunden gelangen Sie in eine Textkonsole und können sich dort mit dem root-Passwort anmelden. Es stehen weder weitere Textkonsolen zur Verfügung, noch wird standardmäßig eine Netzwerkkonfiguration durchgeführt. Der Rescue Modus eignet sich also nur für elementare Administrationsarbeiten. Sobald Sie den Resue Modus mit Strg+D verlassen, wird der Init-Prozess in das Default-Target fortgesetzt. Alternativ können Sie natürlich auch reboot
oder shutdown
ausführen.
root-Passwort zurücksetzen
Zum Zurücksetzen des Passworts ist der Rescue Modus nicht geeignet, weil er ja nur mit dem root-Passwort genutzt werden kann. Aber sofern Sie physischen Zugang zum Rechner (oder zur virtuellen Maschine) haben, können Sie den GRUB-Eintrag auch dahingehend ändern, dass nicht Systemd sondern direkt die Shell gestartet wird.
Wieder betreten Sie beim Start mit E das GRUB-Menü und ändern den Eintrag, der mit dem Schlüsselwort linux16
bzw. linuxefi
beginnt. Diesmal entfernen Sie am Ende des mehrzeiligen Eintrags die Schlüsselwörter rhgb quiet
und fügen stattdessen init=/bin/sh
hinzu. Für die Eingabe gilt das US-Tastaturlayout.
So gelangen Sie ohne Password in eine root-Shell. Gegebenenfalls können Sie nun mit loadkeys de
das deutsche Tastaturlayout aktivieren. Anschließend führen Sie die folgenden Kommandos aus:
mount -o remount,rw /
passwd
touch /.autorelabel
exec /sbin/init
Damit machen Sie das Root-Verzeichnis schreibbar, stellen ein neues Passwort ein, stellen sicher, dass der SELinux-Kontext alle geänderten Dateien beim nächsten Init-Prozess richtiggestellt wird und leiten schließlich diesen Prozess samt einem Reboot ein.