
Eu instaleipeixe-peixe(um shell de linha de comando interativo e fácil de usar) em um servidor Linux, mais tarde alguém o desinstalou, mas eu não sei. Depois de executar chsh -s /usr/local/bin/fish
sem cuidado, não consigo fazer login no servidor agora. A mensagem de erro "login: no shell: Esse arquivo ou diretório não existe" apareceu, o que aparentemente diz que os mariscos não existem mais.
O servidor fornece apenas uma interface CLI, então como posso alterar o shell de login quando não consigo nem fazer login?
Responder1
Se você tiver acesso à conta root, poderá alterar o shell de um usuário usando chsh -u user -s $SHELL
.
Se você tiver acesso ao processo de inicialização, poderá anexar init=$SHELL
para ser descartado em um shell de usuário único, onde poderá corrigir isso, novamente com chsh -u user -s $SHELL
(alguns sistemas que usam uma inicialização de dois estágios com uma imagem initrd podem exigir que você use real_init
em vez disso) . Você provavelmente precisará remontar o sistema de arquivos que contém /etc/passwd
leitura e gravação (usando mount -o remount,rw /
ou similar).
Caso contrário, se você puder su
entrar no usuário de outro usuário, tente su user -c $SHELL
, ou se puder fazer ssh no usuário, você pode tentar algo como ssh user@localhost $SHELL
.
Você também pode inicializar em um CD/USB ativo, montar /
e consertar /etc/passwd
manualmente.
Responder2
eu tenho o mesmo problema, esta solução funciona para mim:
- Inicialize com um live cd (eu uso o debian 7.6) no modo live
- No terminal ativo, obtenha acesso root executando o comando:
passwd root
- Monte o disco da partição da sua distro crash
- Vá para este disco e execute este comando:
cat etc/shells
- Com
nano etc/passwd
remova as referências de peixe e coloque um nome de console válido do ponto 4 - Reinicie e aproveite.
Responder3
Ao tentar fazer login recebi esta mensagem: Não é possível executar /sbin/nologin: esse arquivo ou diretório não existe
Isso é o que eu fiz e funcionou para mim.
- Entrei no sistema com outra conta com privilégios de superusuário
- Digite o seguinte comando:
sudo chsh -u usuário -s $SHELL
onde usuário é o nome da conta com o problema
- Sair do sistema
- Faça login com o nome da conta que teve problema
Responder4
Eu também estava enfrentando o mesmo problema no Elementary OS Loki. Para resolver o problema, executei o seguinte
- primeiro eu removo tudo relacionado ao zsh porsudo apt-get remove zsh && apt-get autoremove
- depois disso eu editei o/etc/senhaarquivo e descobri que o shell do usuário root não está definido, então editei o shell /bin/bash e tudo isso me ajudou a resolver o problema.