J'essaie de changer mon shell par défaut en zsh. J'ai l'entrée correctement placée dans le fichier/etc/shells.
Chaque tentative que j'ai faite avec cette commande s'est terminée avec le même message d'erreur:
chsh -s $(which zsh)
Password: ### after entering the correct password
chsh: PAM: Authentication failure
Sudo chsh -s $(which zsh) ## yields the same result
J'ai utilisé Sudo pour d'autres commandes pour m'assurer que ce n'était pas un échec du mot de passe, et toutes les autres commandes ont fonctionné, mais rien ne fonctionne avec "chsh".
Totalement perplexe.
Information additionnelle:
J'ai ajouté une ligne correspondant au code suggéré par Oli au fichier/etc/shells.
echo $Shell
/bin/bash
Sudo chsh -s /usr/local/bin/zsh
Password:
chsh: PAM: Authentication failure
chsh -s /usr/local/bin/zsh
You may not change the Shell for 'username'
Ne peut toujours pas changer de shell.
PAM a une emprise assez serrée sur chsh
. Comme vous pouvez le voir sous la forme /etc/pam.d/chsh
, cela se vérifie:
# 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.
auth required pam_shells.so
Il y a aussi une page de manuel pour cette vérification (man pam_shells
) qui nous dit ce qui suit:
pam_shells is a PAM module that only allows access to the system if the users Shell is
listed in /etc/shells.
It also checks if /etc/shells is a plain file and not world writable.
Donc, à ce qu'il semble, vous n'avez pas de ligne /usr/bin/zsh
dans /etc/shells
. Ajoutons un:
echo $(which zsh) | Sudo tee -a /etc/shells
chsh -s $(which zsh)
Soit ça ou votre actuel Shell n’est pas listé ici. Si vous êtes bloqué sur quelque chose comme rbash
, il se peut que ce ne soit pas un exemple répertorié et que cela vous empêche peut-être de changer de shell.
J'ai testé (enlevé la ligne zsh
de /etc/shells
, chargé zsh
et essayé de chsh
), mais j'ai vu un message d'erreur très différent:
You may not change the Shell for 'oli'
Donc ce n'est probablement pas ça.
la situation sur mon ordinateur personnel était /etc/shells
n'avait pas que plusieurs entrées de /usr/bin/zsh
. Mais aucune entrée de /bin/zsh
.
Le test de which zsh | Sudo tee -a /etc/shells
renverrait un bon résultat.
Une modification manuelle rapide de sorte que /bin/zsh
était la seule entrée liée à zsh suffisait à corriger rien.
Après cela, j'ai supprimé le répertoire /home/usr/.oh-my-zsh
(j'ai conservé mon fichier .zshrc
), puis je l'ai réinstallé complètement, ce qui a permis de résoudre le problème chsh. Peut-être une combinaison d'un mauvais fichier oh-my-zsh et d'un mauvais fichier Shell a-t-elle créé l'erreur?