Ao estar logado com root tentei mudar o shell com o comando chsh para o shell zsh, mas esqueci de apontar o caminho absoluto da shell.
Ao fazer a mudança digitei chsh --shell zsh root
Ao invés de chsh --shell /bin/zsh root
Fiz logout da máquina e quando fui tentar logar novamente, recebo o erro.
su: falha ao executar zsh: Arquivo ou diretório inexistente
Tentei fazer desta forma para logar com outra shell, mas não fui bem sucedido. su --shell /usr/bin/bash root
E também, tentei. su --preserve-environment --shell /usr/bin/bash root
Para fazer o login com outra shell. Sem sucessos.
Verifiquei o arquivo /etc/passwd para verificar como a shell foi gravada e realmente, fiz cagada, reiniciei o laptop com o caminho errado e agora não consigo acessar o root.
O que vocês sugerem? O caminho que está gravado está desta forma. root:x:0:0:root:/root:zsh
Vou tentar fazer o login através da inicialização e ver se consigo alterar, mas vou deixar postado aqui para ver quem já fez essa cagada.
Como zsh sozinho não estava na lista em /etc/shells, a opção -s foi ignorada, pois um usuário normal chamou o su. Nem a opção -c serviria, pois ela passa o que tem depois do -c para o shell (que não funciona).
Fiz a mesma coisa de propósito no meu PC, e achei duas soluções sem o sudo. As duas exploram o fato de um caminho que não começa com / no Linux é, por padrão, relativo à pasta atual:
cd /bin && su (entrar na pasta /bin e rodar o próprio zsh dentro da pasta)
Criar um script chamado zsh na Home (ou qualquer pasta que você possa entrar como usuário normal), marcar como executável e mandar o su. Ele pode ter apenas o #! apropriado e exec /bin/zsh, por exemplo.
$ cat bash
#!/bin/sh
echo I am "$(id -un)"
$ su
Senha:
I am root