O shell da raiz foi alterado por engano. Como posso alterá-lo de volta para um shell válido?

18

Entrei por engano

chsh -s /usr/bin 

em vez de

chsh -s /bin/bash 

e agora não consigo logar em um shell de root, como eu inicio um shell bash como root manualmente?

    
por ChiseledAbs 28.03.2016 / 15:11

5 respostas

28

Embora o root não tenha acesso, um usuário no grupo sudo ainda pode executar comandos privilegiados - parece que o erro não está no sudo, mas em outro lugar no comando sudo chsh (por exemplo, chsh error).

Como tal, seu sudo aparentemente está funcionando.

O arquivo passwd pode ser editado com:

sudo vipw

E o shell de root foi alterado manualmente.

(primeira linha de /etc/passwd geralmente)

root:x:0:0:root:/root:/bin/bash

Fom man vipw

The vipw and vigr commands edits the files /etc/passwd and /etc/group, respectively. With the -s flag, they will edit the shadow versions of those files, /etc/shadow and /etc/gshadow, respectively. The programs will set the appropriate locks to prevent file corruption.

    
por 28.03.2016 / 15:34
16

Outra opção, supondo que você tenha acesso a outra conta, é substituir manualmente o shell padrão usando su --shell=/bin/bash :

-s, --shell=SHELL
run SHELL if /etc/shells allows it

A principal vantagem disso é que ele só requer acesso a outra conta, não a outra privilegiada .

    
por 28.03.2016 / 21:57
8

Por motivos de segurança, logins sejam textuais ou gráficos e utilitários como su e sudo que permitem executar comandos como um usuário diferente, todos executam esses comandos por meio do shell do usuário de destino. Se o shell do usuário alvo não estiver funcional, bem, você viu os resultados: - (

A menos que você tenha um shell root ainda funcional rodando em algum lugar ou algo parecido com um binário setuid-root ou algo que lhe permita contornar isso, reinicializar e corrigir o problema usando um sistema de resgate ou imagem ao vivo é provavelmente sua melhor aposta .

Inicialize o sistema de recuperação, monte o sistema de arquivos raiz do seu sistema real em algum lugar, digamos, /mnt/foo e edite /mnt/foo/etc/passwd para corrigir o shell. Salvar, desmontar e pronto.

    
por 28.03.2016 / 15:17
6

Adicione init=/bin/bash à sua linha de comando do kernel (se inicializar com o grub, pressione e para editar a entrada de inicialização), e você terá um shell bash rodando como root sem ter que fornecer uma senha. Seu sistema de arquivos raiz provavelmente ainda será montado como somente leitura, portanto, será necessário primeiro remontá-lo e, em seguida, você poderá alterar o shell novamente com chsh .

    
por 29.03.2016 / 02:58
4

sudo usermod -s /bin/bash jdoe

mudará o shell do jdoe para bash . Você pode então sudo egrep jdoe /etc/passwd verificar.

    
por 29.03.2016 / 03:30

Tags