Ubuntu: Versehentlich wurde der Root-Benutzer in eine nicht vorhandene Shell geändert

3932
endolith

Ich habe versucht, die Shell meines Benutzers zu ändern, verwendete jedoch "sudo chsh" und änderte die Root-Shell in "bash" anstelle von "/ bin / bash". Wenn ich jetzt versuche, es zu ändern, bekomme ich "chsh: PAM-Authentifizierung fehlgeschlagen" und es scheint, als ob andere Dinge nicht funktionieren.

~$ sudo su Cannot execute bash: No such file or directory 

Dies geschieht auch im Wiederherstellungsmodus. Was mache ich, um es in etwas Nutzbares umzuwandeln?

7

4 Antworten auf die Frage

15
Bjarke Freund-Hansen

Wenn Sie sich mit Ihrem normalen Benutzer anmelden können, ändern Sie einfach die Root-Benutzer-Shell:

sudo gedit /etc/passwd 

Suchen Sie die Zeile für Ihren Root-Benutzer, normalerweise den ersten, und ändern Sie den letzten Teil von

...:bash 

zu

...:/bin/bash 

Und du solltest gut sein.

(Hinweis: Ersetzen Sie gedit durch einen beliebigen Editor.)

Das hat funktioniert. Vielen Dank! endolith vor 14 Jahren 1
6
JRT

Verwenden Sie die Ubuntu-Installationsdiskette, um die Live-Sitzung zu starten.

Mounten Sie die Root-Partition ('/') auf der Festplatte (stellen Sie sicher, dass sie beschreibbar ist).

Bearbeiten Sie "[HD-Einhängepunkt] / etc / passwd" (z. B. / media / sda1 / etc / passwd).

root sollte die erste Zeile sein, korrigieren Sie einfach die Login-Shell, die der letzte Eintrag in der Zeile ist.

Festplatte aushängen. CD entnehmen Starten Sie neu

Dies ist "wenn Sie sich nicht als normaler Benutzer anmelden können" Broam vor 13 Jahren 3
2
Joshua

Ich habe vor einer Ewigkeit damit gespielt:

cd /bin ; sudo su 

Was passiert, ist ohne / / die Shell wird als relativer Pfad interpretiert. Oh, wenn wir in / bin sind, wird es richtig aufgelöst.

Wenn du wirklich feststeckst; Die Rettungs-CD ist der lange Weg. Die Boot-Option init = / bin / sh gibt Ihnen sofort eine Root-Shell. Der Cursor blinkt bei Ihnen ohne Aufforderung, aber Sie haben eine Root-Shell. Tun

set -i # mount / -o remmount,rw # vi /etc/passwd <fix it> # mount / -o remount,ro # reboot -f 
2
apocalysque

Beachten Sie, dass Sie zur kurzfristigen Problemumgehung die Option "-s" im Befehl su verwenden können, um eine Shell anzugeben. Zum Beispiel:

su -s /bin/bash 

würde Ihre su-Sitzung mit der / bin / bash-Shell starten. Dasselbe gilt für sudo su -s / bin / bash (oder welche Shell Sie auch immer möchten). @Bjarke Freund-Hansens Antwort ist die dauerhafte Lösung.