Mot de passe d'erreur: chsh: PAM: échec d'authentification lors de la tentative d'installation Oh my zsh

11

J'essaie d'installer Oh my zsh. Après l'installation de zsh ( sudo apt-get update && sudo apt-get install -y zsh)

Ensuite j'installe

sudo apt-get install -y curl  

puis installez git.

le problème se produit lorsque j'essaie cette commande.

curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | bash

c'est le journal

sudo curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   146  100   146    0     0     91      0  0:00:01  0:00:01 --:--:--    91
100  1779  100  1779    0     0    525      0  0:00:03  0:00:03 --:--:--  1416
\033[0;34mCloning Oh My Zsh...\033[0m
Cloning into '/home/icom3/.oh-my-zsh'...
remote: Reusing existing pack: 10101, done.
remote: Total 10101 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (10101/10101), 1.92 MiB | 172.00 KiB/s, done.
Resolving deltas: 100% (5337/5337), done.
Checking connectivity... done.
\033[0;34mLooking for an existing zsh config...\033[0m
\033[0;33mFound ~/.zshrc.\033[0m \033[0;32mBacking up to ~/.zshrc.pre-oh-my-zsh\033[0m
\033[0;34mUsing the Oh My Zsh template file and adding it to ~/.zshrc\033[0m
\033[0;34mCopying your current PATH and adding it to the end of ~/.zshrc for you.\033[0m
\033[0;34mTime to change your default shell to zsh!\033[0m
Password: chsh: PAM: Authentication failure

Y a-t-il une idée?

Notez que j'ai essayé

sudo vim /etc/pam.d/chsh  

puis commentez l'auth requis pam_shells.so. Cependant, l'erreur se produit toujours.

UmAnusorn
la source

Réponses:

16

Téléchargez et exécutez le script séparément:

curl -OL https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh
bash install.sh

Et vous devriez probablement annuler les modifications apportées à /etc/pam.d/chsh.

Explication:

Transférer le texte d'un script vers bash

cat script.sh | bash

n'est pas la même chose que de donner un script comme paramètre à bash

bash script.sh

En redirigeant install.shvers bash, bash tire son entrée standard ( stdin ) du tube plutôt que de l'utilisateur. Dans ce cas, chshsemble également recevoir son entrée de stdin , qui est la ligne suivante dans le script après l'appel à chsh. (Pour le moment, il semble que ce soit une ligne vide. Si c'était votre mot de passe, vous n'auriez aucun problème ;-))

Vous pouvez tester cela avec ce court script, dans lequel readattend une ligne d'entrée:

read -p 'input: ' INPUT
echo -n 'You wrote this: '
echo "> $INPUT <"

enregistré sous script.sh:

$ bash script.sh
input: foobar
You wrote this: > foobar <
$ cat script.sh | bash
> echo -n 'You wrote this: ' <
Adaephon
la source
2
Excellent diagnostic. Je rencontrais le même problème sur Debian, et votre correctif fonctionne pour moi. Il y a quelques problèmes ouverts sur le projet oh-my-zsh pour cela ( github.com/robbyrussell/oh-my-zsh/issues/3516 ) donc j'espère que cela sera corrigé en amont aussi. BTW, nitpick mineur: curlimprime le fichier sur stdout au lieu d'écrire le fichier comme wget; vous avez besoin d'une curl -L ... > install.shredirection à la fin de la commande.
Andrew Janke
@AndrewJanke Merci pour le (pas si) mineur nitpick. C'est corrigé maintenant.
Adaephon