14.04 Não autenticando no comando chsh

3

Estou tentando alterar meu shell padrão para zsh. Eu tenho a entrada colocada corretamente no arquivo / etc / shells.

Cada tentativa que fiz com este comando terminou com a mesma mensagem de erro:

chsh -s $(which zsh)
Password: ### after entering the correct password
chsh: PAM: Authentication failure

sudo chsh -s $(which zsh) ## yields the same result

Eu usei sudo para outros comandos para ter certeza de que não foi uma falha de senha, e todos os outros comandos funcionaram, mas nada funciona com "chsh".

Totalmente perdido.

Informações adicionais:

Eu incluí uma linha por código sugerido por Oli no arquivo / etc / shells.

echo $SHELL 
/bin/bash

sudo chsh -s /usr/local/bin/zsh
Password:
chsh: PAM: Authentication failure

chsh -s /usr/local/bin/zsh
You may not change the shell for 'username'

Ainda não é possível alterar o shell.

    
por RCF 08.06.2014 / 06:28

2 respostas

5

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.

    
por Oli 08.06.2014 / 11:57
0

a situação na minha máquina em casa foi /etc/shells não teve apenas várias entradas de /usr/bin/zsh . Mas sem entrada de /bin/zsh .

O teste de which zsh | sudo tee -a /etc/shells retornaria um bom resultado.

Uma rápida edição manual, então /bin/zsh foi a única entrada relacionada ao zsh que foi suficiente para não corrigir nada.

Depois disso, fiz uma exclusão do diretório /home/usr/.oh-my-zsh (mantive meu arquivo .zshrc ) e fiz uma reinstalação completa e removi o problema do chsh. Talvez uma combinação de algum arquivo ruim de oh-meu-zsh e um arquivo de shell ruim tenha criado o erro?

    
por Jaxor 18.04.2015 / 04:15