Como eu poderia alcançar o root depois de mudar de bash para zsh?

2

É muito estranho que depois de mudar para o zsh do bash, eu não consiga acessar o root.

Eu normalmente uso 'su' para logar como root depois que eu faço login como usuário normal (o nome de usuário é normalusername ) com menos privilégios. E foi sempre bom. Mas depois de trocar o shell do root do bash para o zsh, quando eu tento logar via su, eu tenho:

normalusername@(none):~$ su
Password: (enter the correct password)
Cannot execute zsh: No such file or directory

Quando acesso o root diretamente via ssh do meu Mac, obtenho:

localhost:~ myname$ ssh -lroot 106.186.120.20
[email protected]'s password: (enter the correct/incorrect password)
Permission denied, please try again.

Não importa se eu digitei a senha correta, ela aparece de novo e de novo.

Por isso, inseri intencionalmente uma senha incorreta com "su" de um usuário normal e recebi:

normalusername@(none):~$ su
Password: (entered a wrong password and pressed enter)
(pressed enter)
su: Authentication failure

Depois de inserir a senha incorreta, não vi nada, digitei enter duas vezes e, em seguida, obtive o resultado su: Authentication failure .

Eu tentei muitas vezes e a conclusão é:

  1. Se eu digitar a senha correta, ele me dirá que "Não é possível executar zsh: nenhum arquivo ou diretório"
  2. Se eu digitar a senha incorreta, ela não será exibida até que eu pressione enter por 2 a 6 vezes.

Parece ser uma indicação de que eu não esqueci a "senha correta". Mas como posso acessar a raiz mesmo assim?

A entrada em /etc/passwd é

root:x:0:0:root:/root:zsh
    
por AGamePlayer 04.01.2015 / 13:31

3 respostas

8

tente: cd /usr/bin; su . Desde que você não deu um caminho absoluto para zsh. su está verificando o PWD . Mudar para o diretório zsh existe funcionará em alguns sistemas. um exemplo:

% su
Password:
su: zsh: No such file or directory
% cd /usr/local/bin
% su
Password:
# print $OSTYPE
freebsd10.0
#
    
por 05.01.2015 / 05:07
6

Sua entrada em /etc/passwd é

root:x:0:0:root:/root:zsh

Esta é uma entrada inválida: o shell deve ser um caminho completo para um executável, o programa de login não realiza a pesquisa $ PATH.

Você não poderá fazer login na conta raiz por meios normais. Você pode usar o sudo para invocar um comando, por exemplo sudo vipw , se sua conta tiver permissões sudo. Este é o único método comum para ignorar a configuração do shell de login na conta de destino.

Se você não é um sudoer, provavelmente se bloqueou para fora da conta root. Você precisará de acesso ao console para reparar o sistema. Inicialize no modo de usuário único (consulte Como faço para executar um comando como o administrador do sistema (root) ) e editar /etc/passwd para conter

root:x:0:0:root:/root:/bin/zsh

(com o caminho correto para o zsh no seu sistema).

Alguns administradores configuram um conta toor com UID 0 mas um shell diferente (tipicamente um binário estaticamente ligado como sash , para permitir que o root faça o login mesmo em caso de um erro de configuração como este (a configuração incorreta mais comum é uma biblioteca compartilhada quebrada no shell normal).

Para evitar esses problemas no futuro, use o comando chsh para alterar o shell de um usuário, em vez de editar /etc/passwd diretamente. E se você precisar editar /etc/passwd ou algum outro arquivo envolvido no acesso root, mantenha um shell root aberto em um terminal e não o feche até que você tenha verificado que ainda pode efetuar login como root.

    
por 05.01.2015 / 02:11
3
  • Verifique seu shell atual com

    grep '^root:' /etc/passwd
    

    você deve ver no final da linha o caminho completo para o shell usado pelo usuário root, como /bin/zsh . Em seguida, verifique se o caminho não está escrito incorretamente, se o arquivo existe e se as permissões adequadas estão definidas ( r ead e e x ecute).

  • Se o caminho não estiver correto, verifique onde o executável zsh está posicionado com

    type zsh
    
  • Depois disso su para root usando o caminho correto do shell, por exemplo no caso de /bin/zsh :

    su -s /bin/zsh -
    
  • Por fim, execute chsh para alterar o shell padrão para /bin/zsh

por 04.01.2015 / 14:57