Ich bin fälschlicherweise eingetreten
chsh -s /usr/bin
anstatt
chsh -s /bin/bash
und jetzt kann ich mich nicht bei einer root-shell anmelden, wie starte ich eine bash-shell manuell als root?
sudo vipw
Arbeit?
Ich bin fälschlicherweise eingetreten
chsh -s /usr/bin
anstatt
chsh -s /bin/bash
und jetzt kann ich mich nicht bei einer root-shell anmelden, wie starte ich eine bash-shell manuell als root?
sudo vipw
Arbeit?
Antworten:
Obwohl root keinen Zugriff hat, kann ein Benutzer in der sudo-Gruppe weiterhin privilegierte Befehle ausführen - es scheint, dass der Fehler nicht in sudo, sondern an einer anderen Stelle in der sudo-Gruppe auftritt sudo chsh
Befehl vorliegt (z. B. chsh error).
Als solches arbeitet Ihr Sudo anscheinend.
Die passwd-Datei kann bearbeitet werden mit:
sudo vipw
Und die Root-Shell wurde manuell geändert.
(erste Zeile von /etc/passwd
normalerweise)
root:x:0:0:root:/root:/bin/bash
Von Mann vipw
Mit den Befehlen vipw und vigr werden die Dateien / etc / passwd bzw. / etc / group bearbeitet. Mit dem Flag -s bearbeiten sie die Schattenversionen dieser Dateien / etc / shadow bzw. / etc / gshadow. Die Programme setzen die entsprechenden Sperren, um eine Beschädigung der Dateien zu verhindern.
vipw
und vigr
danke! Ich habe immer verwendetsudo vim /etc/passwd
sudo -e
führt diese Sperrbearbeitungsfunktion für jede Bearbeitung aus.
Eine andere Möglichkeit, vorausgesetzt Sie haben Zugriff auf ein anderes Konto, besteht darin, die Standard-Shell manuell zu überschreiben, indem Sie Folgendes verwenden su --shell=/bin/bash
:
-s, --shell = SHELL führe SHELL
aus, wenn / etc / shells dies zulässt
Der Hauptvorteil besteht darin, dass nur Zugriff auf ein anderes Konto erforderlich ist, nicht auf ein anderes privilegiertes Konto .
Aus Sicherheitsgründen werden Anmeldungen, ob in Textform oder grafisch, und Dienstprogramme wie su
undsudo
, mit denen Sie Befehle als ein anderer Benutzer laufen alle diejenigen Befehl durch das Ziel des Benutzers Shell auszuführen. Wenn die Shell des Zielbenutzers nicht funktionsfähig ist, haben Sie die Ergebnisse gesehen :-(
Sofern Sie nicht zufällig eine noch funktionsfähige Root-Shell haben, die irgendwo ausgeführt wird, oder so etwas wie eine setuid-root-Binärdatei oder etwas, mit dem Sie dies umgehen können, ist ein Neustart und eine Behebung des Problems mithilfe eines Rettungssystems oder eines Live-Images wahrscheinlich die beste Wahl.
Booten Sie das Rettungssystem, hängen Sie das Root-Dateisystem Ihres realen Systems an eine beliebige Stelle /mnt/foo
und bearbeiten Sie es /mnt/foo/etc/passwd
, um die Shell zu reparieren. Speichern, aushängen und fertig.
/etc/passwd
ist nicht Klartext? Ich habe das seit mindestens einem Jahrzehnt nicht mehr gesehen. Ist das auf manchen Systemen noch so? Wie auch immer, chroot /mnt/foo chsh -s /bin/bash
könnte ich den Trick in diesem Fall tun?
Fügen Sie init=/bin/bash
Ihrer Kernel-Befehlszeile hinzu (wenn Sie mit grub booten, drücken Sie e
, um den Boot-Eintrag zu bearbeiten), und Sie haben eine Bash-Shell, die als root ausgeführt wird, ohne auch nur ein Passwort eingeben zu müssen. Ihr Root-Dateisystem wird jedoch wahrscheinlich weiterhin schreibgeschützt bereitgestellt. Sie müssen es also zuerst erneut bereitstellen, bevor Sie die Shell wieder mit ändern können chsh
.
sudo usermod -s /bin/bash jdoe
ändert die Schale von jdoe zu bash
. Sie können dann sudo egrep jdoe /etc/passwd
überprüfen.