
Eu amo Peixe. Eu tenho um bom servidor Ubuntu 8.04 executando alguns serviços. Então editei o arquivo /etc/passwd, como fiz no passado, para alterar meu shell padrão de bash para fish. E, sim, cometi um erro de digitação (aliás: eu sei sobre chsh, sou simplesmente estúpido e confiante demais). Por favor, pare de rir.
Como esperado, agora não consigo fazer login. É possível fazer login sem reiniciar o servidor? Sei que posso reiniciar o servidor em modo de segurança e resolver a bagunça, mas gostaria de evitar isso.
Ah, sim, não tenho outro usuário com direitos sudo nesse servidor. Pare de rir de novo.
Aliás, fiz a bagunça usando ssh, mas tenho acesso físico fácil ao servidor, fica a apenas algumas salas de distância.
Responder1
Infelizmente não; você se trancou do lado de fora. O SSH não permitirá que você faça login se o shell estiver faltando. Esta é a aparência da tentativa em /var/log/auth.log
:
Dec 23 15:04:59 ubuntu sshd[5585]: User kees not allowed because shell /bin/fish does not exist
E o login TTY no console sempre tentará iniciar o shell configurado. Sem outro usuário com sudo
direitos, você precisará inicializar no modo de usuário único para corrigir o problema. :(
Responder2
Se você tiver uma senha root definida, você pode fazer login como root na própria máquina (em X ou em um console virtual pressionando alt-F1) ou fazer login remotamente como um usuário não sudo e depois mudar para root usando su
em um terminal.
É claro que o Ubuntu não permite que você faça login como root por padrão, então isso pressupõe que você já tenha alterado isso anteriormente.
Responder3
Se você deseja restaurar alguns arquivos de configuração para algum estado anterior, você sempre pode tentar editá-los, inicializando seu servidor com uma versão Live de algum CD do Ubuntu, monte a partição real onde os arquivos /etc estão localizados e edite-os usando vi.
Você também pode editar o arquivo /etc/sudoers, para dar a mais usuários o direito de se tornarem root.