chsh: "Você não pode alterar o shell para 'nome de usuário'."

chsh: "Você não pode alterar o shell para 'nome de usuário'."

Estou tentando alterar o shell padrão do meu usuário. Mas continuo recebendo este erro:

$ chsh
You may not change the shell for 'flimm'.
$ chsh -s "$(which bash)"
You may not change the shell for 'flimm'.

Estou tentando entender por que não posso alterar o shell do meu usuário.

Responder1

Como você confirmou que /usr/bin/chshé setuid root (e, portanto, deve permitir que usuários não privilegiados alterem seu próprio shell de login), a explicação mais provável para esse comportamento é que

  • seu shell de login atual não estava no arquivo /etc/shells

ou

  • seu shell de login atual foi restrito (provavelmente /bin/rbash)

Ex.

$ grep fish /etc/shells || echo "invalid shell"
invalid shell
$ 
$ sudo chsh -s /usr/bin/fish testuser
$ 
$ su - testuser
Password:
Welcome to fish, the friendly interactive shell
testuser@t400s ~> chsh -s /bin/bash
You may not change the shell for 'testuser'.
testuser@t400s ~> exit

Observe que não há restrição para o root definir o shell de login de um usuário como um shell inválido (como aqui), e isso não torna um shell inválido válido adicionando-o ao arquivo /etc/shells.

$ sudo chsh -s /bin/rbash testuser
$     
$ su - testuser
Password:
testuser@t400s:~$
testuser@t400s:~$ chsh
You may not change the shell for 'testuser'.
testuser@t400s:~$ exit

Se oalvoshell estava ausente do arquivo /etc/shells, você teria recebido uma mensagem diferente:

$ sudo chsh -s /bin/bash testuser
$ 
$ su - testuser
Password:
testuser@t400s:~$ chsh -s /usr/bin/fish
Password:
chsh: /usr/bin/fish is an invalid shell

Responder2

Você pode tentar com o comando sudo usermod -s /bin/bash flimm

Responder3

O shell de login do usuário é mantido /etc/passwde protegido contra modificações por usuários regulares. Você pode ver isso com getent passwd $USER.
Se o seu novo shell estiver listado em /etc/shells, você poderá alterá-lo com:

sudo chsh -s $(type -p bash) $USER

Tal como acontece com todas as manipulações de informações de login, certifique-se de ter uma sessão de login em outro terminal ( Ctrl-Alt-F3) caso você quebre alguma coisa e não consiga fazer login.

informação relacionada