[Linux] Wenn Sie / usr / local / bin / zsh nicht ausführen können, wenn Sie versuchen, sudo su

Einführung

Ich kann den Befehl in sudo nicht finden Als ich versuchte, den Pfad des Root-Benutzers zu ermitteln und festzulegen, wurde er abgelehnt, sodass ich ihn überprüfte

Ursache

Bei der Migration von bash nach zsh ~~ Wurde die Standard-Shell von root versehentlich zu / usr / local / bin / zsh ~~, scheint die Ursache darin zu liegen, dass die Root-Shell nicht an erster Stelle gesetzt ist.

Ich habe den Root-Pfad nicht festgelegt, daher kann ich die Root-Shell nicht mit chsh festlegen! </ font>

Tatsächlicher Weg


❯ echo $SHELL                                      
/usr/bin/zsh

Wechseln Sie zuerst die Shell

sudo chsh root -s /usr/bin/zsh

Wenn die Authentifizierung fehlschlägt

sudo chsh root -s /usr/bin/zsh
chsh: PAM:Authentifizierungsfehler

Bearbeiten Sie / etc / pam.d / chsh, damit Sie die Shell ändern können.

#
# The PAM configuration file for the Shadow `chsh' service
#

# This will not allow a user to change their shell unless
# their current one is listed in /etc/shells. This keeps
# accounts with special shells from changing them.


#Kommentar hier raus
# auth       required   pam_shells.so

In diesem Zustand können Sie es ändern, indem Sie erneut "sudo chsh root -s / usr / bin / zsh" drücken. Wenn Sie es ändern können, machen Sie die auskommentierte Zeile rückgängig.

Stammpfad ändern

$ sudo su -
$ passwd root

Bitte geben Sie ein neues UNIX-Passwort ein: xxx
Bitte geben Sie Ihr neues UNIX-Passwort erneut ein: xxx
passwd:Passwort korrekt aktualisiert

$ exit

Recommended Posts

[Linux] Wenn Sie / usr / local / bin / zsh nicht ausführen können, wenn Sie versuchen, sudo su
Linux (Über Benutzer und su / sudo-Befehle)
Einstellungen, wenn Sie Python-Mecab mit Travis ausführen möchten