web-dev-qa-db-fra.com

14.04 Non authentification sur commande chsh

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.

3
RCF

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.

5
Oli

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?

0
Jaxor