Comment réparer "login: no shell: No tel file ou directory" quand je ne peux même pas me connecter?

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:

  1. Démarrer avec un cd live (j'utilise debían 7.6) en mode live
  2. Dans le terminal en direct, obtenez l'access root en exécutant la command: passwd root
  3. Montez le disque de la partition de votre crash distro
  4. Allez sur ce disque et lancez cette command: cat etc/shells
  5. Avec nano etc/passwd supprimez les references de poisson et mettez un nom de console valide du point 4
  6. Redémarrez et appréciez.

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.

  1. Je me suis connecté au système avec un autre count avec des privilèges super-user
  2. Entrez la command suivante:

sudo chsh -u user -s $ SHELL

où user est le nom du count avec le problème

  1. Déconnection du système
  2. Connectez-vous avec le nom du count qui a eu un problème