Executado acidentalmente sudo rm / * em um servidor remoto

11

Eu acidentalmente executei rm /* enquanto estava logado como root em um servidor Ubuntu remoto e apaguei praticamente todos os binários e atualmente não consigo logar via ssh ou ftp para restaurar os arquivos (e esperar pelo melhor).

Existe alguma maneira de corrigir essa bagunça, ou devo chamar o datacenter e pedir um formato?

    
por Ant 09.08.2011 / 01:44

4 respostas

26

rm /* deve excluir muito pouco. Não há nenhum -r flag que apague recursivamente qualquer coisa, e sem ele os diretórios não serão excluídos (e mesmo se os diretórios forem excluídos, somente os vazios poderão ser excluídos). Esta resposta é baseada na suposição de que você não executou rm -rf /* .

Os únicos arquivos no sistema de arquivos raiz de conseqüência podem ser os links simbólicos para o kernel e initrd (embora em um sistema Ubuntu eu esteja olhando, eles não existam) ou um /lib64 symlink em sistemas de 64 bits .

O problema pode ser que o link simbólico /lib64 -> /lib tenha sido excluído. Isso é bem desagradável, já que quase todos os programas dependem desse link:

$ ldd /bin/bash
...
    /lib64/ld-linux-x86-64.so.2 (0x00007f8946ab7000)

Esse ld-linux é o carregador dinâmico e, se não estiver disponível, você não poderá executar nenhum executável dinâmico. Isso tornará extremamente difícil fazer o login, e você pode não conseguir de forma alguma.

Um salvador pode ser busybox . Execute isto para verificar:

$ ldd /bin/busybox
    not a dynamic executable

Neste caso, o busybox deve ser executado, mas a questão é como você pode executá-lo?

Se você tiver acesso ao prompt do boot loader, você poderá inicializar com init=/bin/static-sh , onde static-sh é um link simbólico para busybox (verifique se o /bin/static-sh existe - ele faz no meu sistema, mas não é o padrão do Ubuntu. Esse bug sugere que ele está disponível.

Quando tiver um shell de raiz, você poderá recriar o link simbólico /lib64 . Você pode precisar primeiro remontar o sistema de arquivos raiz como leitura / gravação. O busybox deve ter essas ferramentas incorporadas, que você pode executar da seguinte forma:

# busybox mount -o remount,rw /
# busybox ln -s /lib /lib64
# /bin/bash
bash# 

Se o bash funcionar, o problema deve ser corrigido.

    
por 09.08.2011 / 03:38
18

Se você precisar recuperar arquivos da instalação atual, peça ao seu host para ajudá-lo. Supondo que seja uma VM, são necessários cerca de cinco minutos do dia para criar imagens do disco, reinstalar o host a partir do zero e despejar a imagem de disco antiga em seu novo sistema de arquivos.

Se você não precisar de nada, basta reinstalá-lo. Quase sempre a opção mais rápida quando você trabalha duro.

    
por 09.08.2011 / 02:17
2

Se você acabou de excluir o link simbólico / lib64 para / lib e ainda tem o console aberto, faça:

/lib/ld-linux-x86-64.so.2 /bin/ln -s /lib /lib64

e você poderá executar os comandos normalmente novamente. Ajuste o caminho para sua biblioteca real de ld. Você também pode executar qualquer outro comando que você queira apenas preenchendo-o com o caminho completo da biblioteca ld.

    
por 11.09.2012 / 14:16
1

Sem ter acesso ao servidor físico, não há muito o que fazer.

    
por 09.08.2011 / 01:48