Quais são os conteúdos de / bin / bash, e o que eu faço se eu acidentalmente os sobrei?

25

Então, eu fiz uma coisa estúpida. Eu acidentalmente sobrei o arquivo / bin / bash com um script idiota que eu pretendi colocar dentro da pasta / bin.

Como obtenho o conteúdo desse arquivo de volta? Existe uma maneira de encontrar o conteúdo na Web e apenas copiá-lo de volta? Quais são as minhas opções aqui, considerando que o terminal dá um erro falando sobre "Muitos links simbólicos?"

Ainda sou um novato nesse tipo de coisa, e agradeço toda a ajuda que posso conseguir.

Edit: Eu esqueci de mencionar que estou no Kali 2.2 Rolling, que é bem debian com alguns recursos adicionais.

Edit 2: Eu também reiniciei a máquina, pois não percebi o meu erro até poucos dias atrás. Isso torna isso um pouco mais difícil.

    
por GarrukApex 17.10.2017 / 06:38

3 respostas

31

bash é um shell, provavelmente o shell do seu sistema, então agora coisas estranhas acontecem, enquanto partes do shell ainda estão na memória. Depois de sair ou reiniciar, você estará em maiores dificuldades.

Então, a primeira coisa a fazer é mudar seu shell para algo seguro. Veja quais shells você instalou

cat /etc/shells

Em seguida, altere seu shell para uma das outras shells listadas lá, por exemplo

chsh -s /bin/dash

Atualizar, porque você já reinicializou:

Você tem sorte de que hoje em dia o processo de inicialização não dependa de bash , para que seu sistema inicialize, você simplesmente não consegue obter uma linha de comando. Mas você pode iniciar um editor para editar /etc/passwd e alterar o shell na linha root de /bin/bash para /bin/dash . Faça o logout e faça o login novamente. Apenas não faça nenhuma outra alteração nesse arquivo, ou você pode atrapalhar completamente o seu sistema.

Em seguida, tente reinstalar bash com

apt-get --reinstall install bash

Se tudo for bem sucedido, você pode chsh voltar para bash .

Finalmente: eu acho que o kali é uma distribuição altamente especializada, provavelmente não adequada para pessoas que acidentalmente sobrescrevem seu shell. Como esta frase foi chamada de rude e dura, devo acrescentar que escrevi por experiência própria. Quando eu era mais novo, estraguei meu sistema porque ninguém me disse para evitar brincar como root.

    
por 17.10.2017 / 08:10
64

Não desligue sua máquina.

Você ainda tem um shell em execução? Isso é festa? Se sim, você está bem. (Mas não faça isso de novo.)

Executar:

sudo cp /proc/$$/exe /bin/bash

Voila, tudo está bem.

Desde que alguém nos comentários duvide que isso funcione:

[vagrant@localhost ~]$ cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[vagrant@localhost ~]$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[vagrant@localhost ~]$ echo $0
-bash
[vagrant@localhost ~]$ sudo rm /bin/bash
[vagrant@localhost ~]$ bash
-bash: /bin/bash: No such file or directory
[vagrant@localhost ~]$ sudo su -
su: /bin/bash: No such file or directory
[vagrant@localhost ~]$ sudo cp /proc/$$/exe /bin/bash
[vagrant@localhost ~]$ bash
[vagrant@localhost ~]$ exit
[vagrant@localhost ~]$ sudo su -
[root@localhost ~]# logout
[vagrant@localhost ~]$ 
    
por 17.10.2017 / 08:32
4

Se você conseguir fazer login, mas não conseguir abrir um terminal ou acessar um shell, mas você pode acessar arquivos através da GUI, vá para /bin , procure por arquivos cujos nomes terminam com sh (mas não .sh ) e execute um (clicando duas vezes ou clicando com o botão direito do mouse). Em particular, procure o seguinte:

  • sh
  • dash
  • ash
  • ksh
  • zsh

Se você conseguir usar um shell, tente resposta de Philippos .

Outra abordagem é inicializar no modo de usuário único seguindo estas instruções mas especifique init=/bin/sh (ou um dos outros shells) em vez de init=/bin/bash .

    
por 18.10.2017 / 04:42