Shell da raiz alterada para caminho inexistente

3

Eu cometi um erro:

  • Nova instalação do FreeBSD 8.2
  • logado como root
  • bash instalado a partir de portas
  • usuários criados, configurando o bash como shell
  • vipw (editar arquivo passwd)
  • alterou o shell do root de /bin/csh para /bin/bash
  • desconectado
  • faça login como root
  • ERRADO !!

Como você provavelmente adivinhou, o bash shell não é colocado em / bin :( Um erro muito burro!

Agora não consigo fazer login como root. Eu posso fazer o login como meu usuário de roda, mas não posso vipw .

Tentei o seguinte sem sorte:

  • Reinicie para usuário único, /rescue/vi /etc/passwd
  • Faça login como usuário de roda, su -m

Então, como altero o shell de root de volta para /bin/csh ?

Eu poderia simplesmente reinstalar - mas eu prefiro aprender algumas coisas novas!

    
por Phliplip 31.03.2011 / 13:30

7 respostas

9

Inicialize no modo de usuário único e, em seguida:

mount -w /
vipw

Alterar caminho para /usr/local/bin/bash

exit
    
por 31.03.2011 / 13:53
3

Use um CD / DVD ao vivo de algum tipo. (O Gentoo é uma boa escolha.) Basta montar a unidade e editar o arquivo / etc / passwd.

    
por 31.03.2011 / 13:40
3

Apenas uma dica ... Após o primeiro login como root, eu mudo a senha ou a senha. Desta forma, mesmo com dados corrompidos / disco ou partição perdidos, tenho um usuário com privilégios e 2 shells diferentes.

    
por 31.03.2011 / 15:06
1

Você pode su (sem - )?

Se não, talvez sudo -u root /usr/bin/bash funcione?

Caso contrário, inicialize a partir do CD, monte o sistema de arquivos raiz, altere o arquivo etc/passwd no sistema de arquivos raiz, sincronize, umount, reinicialize.

    
por 31.03.2011 / 14:19
0

Tente modificar a string de inicialização do grub durante a inicialização para que não encontre o kernel. O grub vai deixá-lo no busybox. Tem um editor vi embutido. Monte, edite e reinicie.

    
por 31.03.2011 / 13:47
0

O comando correto para o modo de usuário único é:


mount -u -rw /
mount -a -t ufs

faça o seguinte: chsh -s / usr / local / bin / bash root

    
por 31.03.2011 / 15:01
0

Acabei de fazer exatamente o mesmo em uma Synology Diskstation - presumi que o / bin / bash estava disponível quando mudava rapidamente o shell de root. Doh.

Eu usei a opção -s do su quando logado como administrador para forçar um shell:

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

Isto é:

su -s /bin/ash 

Ufa.

    
por 25.09.2012 / 15:05