su
executa seu shell de login conforme indicado no banco de dados de login. Isso é /root/zsh
, que não existe, então o comando su
falha.
chsh
só aceita alterar o shell de um usuário que atualmente possui um shell válido (listado em /etc/shells
). Como /root/zsh
não é aceito, chsh
falha. O usuário root pode alterar o shell de qualquer pessoa, mas esse teste é feito após a verificação de validade do shell atual.
No entanto, o sudo
não se importa com o seu shell de login (a menos que você execute sudo -s
ou sudo -i
). Portanto, você tem diversas maneiras de reparar seu sistema: sudo /bin/zsh
fornece um shell, no qual é possível executar vipw
e corrigir a entrada para raiz. Você pode até executar sudo vipw
diretamente.
Eu recomendo iniciar um shell de root em um terminal e fazer a mudança de configuração em outro terminal. Não saia do shell de raiz até confirmar que o sistema está de volta ao estado de funcionamento testando que sudo -i
ou sudo su
funciona.