Se o seu login shell não for iniciado, você não poderá efetuar login. O cliente enviará uma string para o servidor e ficará no shell de login do usuário no servidor para interpretar a string. O cliente não tem como dizer ao servidor “execute outro comando em vez disso”.
Este é um mecanismo de segurança: se o shell de um usuário é restrito no que ele pode fazer, o usuário não pode fazer nada que não permita.
Se você bloqueou o acesso a todas as contas no sistema, será necessário usar algum método que ignore os logins normais, como acesso físico ou um console de recuperação.
Algumas dicas:
- Ao fazer manutenção, sempre mantenha um shell de root aberto e não o feche até que você tenha testado se tudo está funcionando.
- Instale um shell vinculado estaticamente em uma conta com direitos sudoer. Eu não vejo nenhum pré-empacotado por Arch. O Debian tem alguns ; você poderia simplesmente copiar o executável e adicioná-lo a
/etc/shells
.
- Certifique-se de que você tenha uma maneira de obter root, mesmo que algumas coisas estejam quebradas; defina o shell do root como
bash-static
ou sash
algo semelhante ou configure um conta toor (caminho alternativo para o login da raiz). Tenha em mente que sudo
poderia quebrar também; você pode querer ter uma senha de emergência na conta do toor que é gerada aleatoriamente (única e não memorizada) e escrita em um pedaço de papel que você guarda em um cofre.