O PAM tem um strong controle sobre chsh
. Como você pode ver o formulário /etc/pam.d/chsh
, ele está fazendo uma verificação:
# This will not allow a user to change their shell unless
# their current one is listed in /etc/shells. This keeps
# accounts with special shells from changing them.
auth required pam_shells.so
Há também uma página man para essa verificação ( man pam_shells
), que nos diz o seguinte:
pam_shells is a PAM module that only allows access to the system if the users shell is
listed in /etc/shells.
It also checks if /etc/shells is a plain file and not world writable.
Então, ao que parece, você não tem uma linha /usr/bin/zsh
em /etc/shells
. Vamos adicionar um:
echo $(which zsh) | sudo tee -a /etc/shells
chsh -s $(which zsh)
Ou isso ou o seu atual shell não está listado lá. Se você está preso em algo como rbash
, isso pode não ser um exemplo listado e isso pode impedir você de alterar o shell.
Eu testei (removi a linha zsh
de /etc/shells
, carreguei zsh
e tentei chsh
), mas vi uma mensagem de erro muito diferente:
You may not change the shell for 'oli'
Então provavelmente não é isso.