Sudo rm / * ejecutado accidentalmente en un servidor remoto

11

Ejecuté accidentalmente rm /*mientras estaba conectado como root en un servidor Ubuntu remoto y eliminé casi todos los archivos binarios y actualmente no puedo iniciar sesión a través de ssh o ftp para restaurar los archivos (y espero lo mejor).

¿Hay alguna manera de solucionar este problema de alguna manera, o debería llamar al centro de datos y pedir un formato?

Hormiga
fuente
2
¿Puedes confirmar si se trata de un servidor físico o virtual? También si ejecutó el -rargumento rmo si realmente realizó el comando que muestra. ¿Su proveedor de alojamiento proporciona alguna forma de acceder a las imágenes de disco fuera de esa máquina en particular?
Caleb

Respuestas:

26

rm /*Debería eliminar muy poco. No hay ningún -rindicador que elimine recursivamente nada, y sin él los directorios no se eliminarán (e incluso si se eliminaron los directorios, solo se pueden eliminar los vacíos). Esta respuesta se basa en el supuesto de que no ejecutó rm -rf /*.

Los únicos archivos en el sistema de archivos raíz de consecuencia pueden ser los enlaces simbólicos al kernel y al initrd (aunque en un sistema Ubuntu que estoy viendo, no existen) o un /lib64enlace simbólico en sistemas de 64 bits.

El problema puede ser simplemente que el /lib64 -> /libenlace simbólico ha sido eliminado. Sin embargo, eso es bastante desagradable, ya que casi todos los programas dependerán de ese enlace simbólico:

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

Ese ld-linuxes el cargador dinámico, y si no está disponible, no puede ejecutar ningún ejecutable dinámico. Esto hará que sea extremadamente difícil iniciar sesión, y es posible que no pueda hacerlo en absoluto.

Un salvador puede ser busybox. Ejecute esto para verificar:

$ ldd /bin/busybox
    not a dynamic executable

En este caso, busybox debería ser ejecutable, pero la pregunta es ¿cómo puede ejecutarlo?

Si tiene acceso al indicador del cargador de arranque, puede arrancar con init=/bin/static-sh, donde static-sh es un enlace simbólico busybox(verifique que /bin/static-shexista, lo hace en mi sistema, pero no es Ubuntu estándar. Este error sugiere que está disponible) .)

Una vez que tenga un shell raíz, puede volver a crear el /lib64enlace simbólico. Es posible que primero deba volver a montar el sistema de archivos raíz como lectura / escritura. busybox debe tener estas herramientas integradas, que puede ejecutar de la siguiente manera:

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

Si bash funciona, el problema debería solucionarse.

camh
fuente
18

Si necesita recuperar archivos de la instalación actual, solicite ayuda a su host. Suponiendo que se trata de una máquina virtual, toma aproximadamente cinco minutos de su día crear imágenes de su disco, reinstalar su host desde cero y volcar la imagen de disco anterior en su nuevo sistema de archivos.

Si no necesita nada, solo pídales que lo reinstalen. Casi siempre es la opción más rápida cuando deshones las cosas.

Oli
fuente
2
Concurrir. Si son un servicio de alojamiento de VM razonablemente competente, deberían poder hacerlo. Comuníquese con ellos lo más rápido posible para asegurarse de que todavía tengan una copia de seguridad previa al atornillado.
Shadur
2

Si acaba de eliminar el enlace simbólico / lib64 a / lib y todavía tiene la consola abierta, simplemente haga lo siguiente:

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

y deberías poder ejecutar comandos normalmente de nuevo. Ajuste la ruta a su biblioteca ld real. También puede ejecutar cualquier otro comando que desee simplemente introduciéndolo con la ruta completa de la biblioteca ld.

Neuro Mancer
fuente
1

Sin tener acceso al servidor físico, no hay mucho que pueda hacer.

Marco Ceppi
fuente
Entonces, ¿debería pedir un formato entonces, o hay una manera de restaurar esos archivos sin batir todo lo demás?
Ant
Olvida que existe una alta probabilidad de que este sea un servidor virtual, en cuyo caso "servidor físico" no significa mucho, excepto tener acceso a herramientas remotas de nivel superior.
Caleb