J'ai installé fishfish (un shell de command line interactif convivial) sur un server Linux, plus tard quelqu'un l'a désinstallé mais je ne le sais pas. Après avoir exécuté chsh -s /usr/local/bin/fish
sans précaution, je ne peux pas me connecter au server maintenant. Message d'erreur "login: no shell: No tel file ou directory" apparaissait apparemment qui dit que les coquillages n'existent plus.
Le server ne fournit qu'une interface CLI, alors comment puis-je changer le shell de connection lorsque je ne peux même pas me connecter?
Si vous avez access au count root, vous pouvez changer le shell pour un user à partir de là en utilisant chsh -u user -s $SHELL
.
Si vous avez access au process d'amorçage, vous pouvez append init=$SHELL
à un shell mono-user, où vous pouvez le réparer, à nouveau avec chsh -u user -s $SHELL
(certains systèmes utilisant un chsh -u user -s $SHELL
deux étapes boot avec une image initrd peut vous obliger à utiliser real_init
place). Vous aurez probablement besoin de remonter le système de files contenant /etc/passwd
en lecture-écriture (en utilisant mount -o remount,rw /
ou similaire).
Sinon, essayez su user -c $SHELL
, ou si vous pouvez ssh dans l'user, vous pouvez essayer quelque chose comme ssh user@localhost $SHELL
.
Vous pouvez également démarrer dans un live CD / USB, monter /
et réparer /etc/passwd
manuellement.
j'ai le même problème, cette solution fonctionne pour moi:
passwd root
cat etc/shells
nano etc/passwd
supprimez les references de poisson et mettez un nom de console valide du point 4 En essayant de me connecter, je recevais ce message: Impossible d'exécuter / sbin / nologin: Aucun file ou directory
C'est ce que j'ai fait et cela a fonctionné pour moi.
sudo chsh -u user -s $ SHELL
où user est le nom du count avec le problème