Edite o arquivo / etc / passwd do grub

2

Eu tentei instalar o zsh no Ubuntu (14.04). Quando mudei para o zsh, não consegui entrar no modo de superusuário.

Se eu fizer um su ele pede passwd e ao digitar a senha correta, diz:

Cannot execute which zsh: No such file or directory

Mas quando eu digito uma senha incorreta e pressiono enter 4-5 vezes, ela não mostra nada.

Ao verificar meu arquivo /etc/passwd , ele mostrou:

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

Eu tentei editar o arquivo e salvar, mas mostra

Unable to save /etc/passwd

Eu tentei alterar o nível de execução para 1 via grub, mas isso resulta em um erro:

APCI PCC probe failed

Estou executando o Ubuntu no VirtualBox.

    
por iyerrama29 09.05.2016 / 15:06

4 respostas

1

Você deve remover do arquivo de senha a palavra which ... Deve ser algo como:

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

Onde / bin / zsh é o caminho para o binário do shell Z.
Na configuração atual, o processo de login está tentando executar which zsh e esse comando está falhando.

Além disso, edite o arquivo como root, com sudo vim /etc/passwd , por exemplo, porque é um arquivo que só pode ser escrito por root.

Se você não pode sudo ou su , então inicialize no modo de recuperação (escolha a opção Avançado para o Ubuntu no carregador de boot GRUB, escolha Ubuntu ... (modo de recuperação), então escolha root / Drop to root prompt do shell). Depois disso, remonte o sistema de arquivos / como leitura-gravação ( mount -o remount,rw / ) e, em seguida, edite o conteúdo do arquivo /etc/passwd . Testado isso no Ubuntu 16.04.

    
por 09.05.2016 / 15:11
1

Você não pode editar arquivos a partir do prompt do Grub (o Grub só pode ler arquivos, não tem suporte para gravação). Você precisa inicializar o Linux¹.

Se você não consegue logar normalmente, você pode ignorar completamente o processo de inicialização normal e iniciar apenas um kernel e um shell. No prompt do Grub, pressione e para editar a seqüência de inicialização, adicione init=/bin/bash ao final da linha linux=… e pressione Ctrl + X para inicializar. Você terá um shell de raiz e nada mais. Executar

mount -t proc proc /proc
mount -o remount,rw /

Agora, execute chsh -s /bin/zsh root para reparar seu banco de dados de usuários.

Em seguida, reinicie com Alt + SysRq + U seguido por Alt + SysRq + B , ou inicializar normalmente com

mount -o remount,ro /
umount /proc
exec /sbin/init

Dica: execute chsh sem um argumento usuário . Dessa forma, valida o shell.

Dica: quando você está alterando alguma configuração, sempre mantenha um shell aberto e teste a configuração. Se você cometeu um erro, ainda terá uma linha de comando para repará-lo.

Dica: você pode crie uma conta toor com UID 0 (por isso ainda é raiz), com a mesma senha que root, e onde o shell permanece /bin/sh , para que você mantenha outra maneira de faça o login se as coisas quebrarem. Melhor ainda, instale um shell vinculado estaticamente ( busybox-static ou zsh-static ) e use-o como o shell de login do toor.

¹ Ou você pode usar guestfs se o host for Linux.

    
por 10.05.2016 / 02:39
0

Se você souber a senha do root, poderá executar su -s /bin/bash para obter um shell bash de raiz.

sudo -s /bin/bash também deve funcionar e, dependendo de como o sudo está configurado, você precisará saber apenas sua própria senha ou nenhuma senha.

Você pode usar chsh -s /bin/bash para alterar o shell do root de volta para o bash.

BTW, geralmente é uma má idéia trocar o shell do root em qualquer sistema unix. Muitos cron jobs, etc., dependem do shell root ser o shell raiz padrão para aquele sistema operacional e WILL quebrar se você o alterar.

    
por 10.05.2016 / 05:55
-2

Pls tente o sudo vi / etc / passwd Digite sua senha de usuário registrada no momento.

Além disso, você pode encontrar o caminho correto do shell em / etc / shell

E para verificar o shell atual, pls tente echo $ SHELL

    
por 09.05.2016 / 15:37