Sudo rm / * exécuté accidentellement sur un serveur distant

11

J'ai accidentellement exécuté en rm /*étant connecté en tant que root sur un serveur Ubuntu distant et supprimé à peu près tous les binaires et actuellement je ne peux ni me connecter via ssh ou ftp pour restaurer les fichiers (et j'espère que ce sera le meilleur).

Existe-t-il un moyen de corriger ce désordre, ou devrais-je appeler le centre de données et demander un format?

Fourmi
la source
2
Pouvez-vous confirmer s'il s'agit d'un serveur physique ou virtuel? Aussi, si vous avez exécuté l' -rargument rmou si vous avez simplement exécuté la commande que vous montrez. Votre hébergeur propose-t-il un moyen d'accéder aux images de disque en dehors de cette machine particulière?
Caleb

Réponses:

26

rm /*devrait supprimer très peu. Il n'y a aucun -rindicateur qui supprimerait récursivement quoi que ce soit, et sans lui, les répertoires ne seront pas supprimés (et même si les répertoires ont été supprimés, seuls les vides peuvent être supprimés). Cette réponse repose sur l'hypothèse que vous n'avez pas exécuté rm -rf /*.

Les seuls fichiers du système de fichiers racine qui en découlent peuvent être les liens symboliques vers le noyau et initrd (bien que sur un système Ubuntu que j'examine, ils n'existent pas) ou un /lib64lien symbolique sur les systèmes 64 bits.

Le problème peut simplement être que le /lib64 -> /liblien symbolique a été supprimé. C'est plutôt méchant, car à peu près tous les programmes s'appuieront sur ce lien symbolique:

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

Il ld-linuxs'agit du chargeur dynamique et s'il n'est pas disponible, vous ne pouvez exécuter aucun exécutable dynamique. Cela rendra la connexion extrêmement difficile, et vous ne pourrez peut-être pas du tout.

Un sauveur peut être busybox. Exécutez ceci pour vérifier:

$ ldd /bin/busybox
    not a dynamic executable

Dans ce cas, busybox devrait être exécutable, mais la question est de savoir comment l'exécuter?

Si vous avez accès à l'invite du chargeur de démarrage, vous pourrez peut-être démarrer avec init=/bin/static-sh, où static-sh est un lien symbolique vers busybox(vérifiez que cela /bin/static-shexiste - c'est le cas sur mon système, mais ce n'est pas Ubuntu standard. Ce bogue suggère qu'il est disponible .)

Une fois que vous avez un shell racine, vous pouvez recréer le /lib64lien symbolique. Vous devrez peut-être d'abord remonter le système de fichiers racine en lecture / écriture. busybox devrait avoir ces outils intégrés, que vous pouvez exécuter comme suit:

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

Si bash fonctionne, le problème devrait être résolu.

camh
la source
18

Si vous devez récupérer des fichiers à partir de l'installation actuelle, demandez à votre hôte de vous aider. En supposant qu'il s'agit d'une machine virtuelle, il faut environ cinq minutes par jour pour créer une image de votre disque, réinstaller votre hôte à partir de zéro et vider l'ancienne image disque dans votre nouveau système de fichiers.

Si vous n'avez besoin de rien, faites-les simplement réinstaller. Presque toujours l'option la plus rapide lorsque vous osez dur.

Oli
la source
2
Concur. S'ils sont un service d'hébergement de VM raisonnablement compétent, ils devraient être en mesure de le faire. Contactez-les le plus rapidement possible pour vous assurer qu'ils auront toujours une sauvegarde pré-vissage.
Shadur
2

Si vous venez de supprimer le lien symbolique / lib64 vers / lib et que la console est toujours ouverte, faites simplement:

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

et vous devriez pouvoir exécuter à nouveau les commandes normalement. Ajustez le chemin vers votre bibliothèque ld réelle. Vous pouvez également exécuter toute autre commande de votre choix en la faisant simplement précéder du chemin complet de la bibliothèque ld.

Neuro Mancer
la source
1

Sans avoir accès au serveur physique, vous ne pouvez pas faire grand-chose.

Marco Ceppi
la source
Alors, dois-je demander un format alors, ou existe-t-il un moyen de restaurer ces fichiers sans fouetter tout le reste?
Ant
Vous oubliez qu'il y a une forte probabilité qu'il s'agisse d'un serveur virtuel, auquel cas «serveur physique» ne signifie pas grand-chose sauf avoir accès à des outils distants de niveau supérieur.
Caleb