root-Passwort zurücksetzen in CentOS 7

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.

Mit einem zusätzlichen Parameter in der GRUB-Zeile linux16 starten Sie den Rescue-Modus
Mit einem zusätzlichen Parameter in der GRUB-Zeile linux16 starten Sie den Rescue Modus

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.

GRUB-Einstellungen zum direkten Start einer Shell
GRUB-Einstellungen zum direkten Start einer Shell

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.

Quellen