Posso iniciar um processo como root sem iniciar o shell de login do root?


8

Eu tentei mudar o shell de login.

Aqui está a /etc/passwdaparência da primeira linha (em uma instalação do Debian Wheezy):

rootx:0:0:root:/root:/:zsh

Quando tento fazer login como root:

Cannot execute zsh: No such file or directory

Eu sei que zshestá disponível:

$ which zsh
/usr/bin/zsh

Ok, parece lógico substituir zshpor seu caminho completo. Mas como posso fazer isso?

Eu tenho outro usuário no sistema ( user), no entanto, ele não possui privilégios de root e sudonão está instalado no sistema.

Suponha que, por qualquer motivo (criptografia, acesso físico, ...), não seja possível inicializar em um CD ao vivo para modificar o arquivo.

Eu sei, no entanto, as credenciais da rootconta.

Minha pergunta é: existe alguma maneira, mesmo programaticamente, de iniciar um processo com a rootconta sem iniciar primeiro o shell de logon?


que tal su? ou gksu? algo comosu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'
qdii 12/05

A linha do arquivo passwd não deveria ser / usr / bin / zsh? Por que você colocou apenas a string zsh?
slm

@slm Essa é a mudança do OP quer fazer ...
um CVn

1
se a sugestão do @qdii funcionar (ou seja, isso su -c "<commands>") funcionar ... não poderíamos simplesmente usar su -c "/bin/bash"para chegar a uma base de trabalho com o usuário root ?
HumanANDpeace

1
@ humanityANDpeace: isso não deveria funcionar. O comando transmitido para -cé executado através do shell de login do usuário. -spode ser usado para usar outro shell ... apenas se o shell de login existente for válido ou o invocador for root.
12163 Mat

Respostas:


4

Tem permissões su

Você pode usar o seguinte comando para alterar o shell de qualquer usuário.

su -c "/usr/bin/chsh -s /bin/bash root"

Se você tem acesso físico

Durante a inicialização do Grub, você pode entrar em qualquer sistema desde que tenha acesso ao console e não exista uma senha que impeça o acesso ao menu Grub.

Durante a inicialização inicial do sistema, quando o menu Grub aparecer, se você entrar no menu e editar (pressionar etecla) a linha do kernel, poderá adicionar um dos seguintes itens para fazer o kernel inicializar no modo de usuário único.

  • solteiro
  • init = / bin / sh
  • 1

A linha será mais ou menos assim:

 kernel /vmlinuz-2.6.15-27-386 root=/dev/mapper/Ubuntu-root ro init=/bin/bash

No Grub, deve ser semelhante a este:

       ss do grub

Depois de fazer as alterações, inicialize o kernel (pressione a tecla b).

Isso fornecerá acesso temporário ao sistema com um shell, no qual você poderá usar o vi / vim para fazer as alterações necessárias no seu /etc/passwdarquivo. Basta digitar rebootquando terminar.


2
Ele diz que não tem acesso físico, portanto, provavelmente não poderá ver o menu do GRUB.
Renan

@Renan. OK, eu não entendi isso nas primeiras leituras. Ele está oculto na linha sobre o "..Não consigo inicializar em um CD ao vivo ..", que é estranha para mim.
slm

4
Seu sucomando não funcionará, pois tentará invocar o shell do root, que não existe.
Gilles 'SO- stop be evil'

@Gilles: Tem alguma outra idéia? Não estou vendo uma maneira de corrigir isso sem acesso físico. Parece que estamos trabalhando exatamente contra o que o sistema foi projetado para impedir neste momento.
slm

1
@slm Sem o sudo, acho que a conta root está bloqueada, portanto é necessário acesso físico.
Gilles 'SO- stop be evil'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.