Przypadkowo wykonane polecenie sudo rm / * na zdalnym serwerze

11

Przypadkowo wykonałem rm /*podczas logowania jako root na zdalnym serwerze Ubuntu i usunąłem prawie wszystkie pliki binarne, a obecnie nie mogę się zalogować przez ssh lub ftp, aby przywrócić pliki (i mam nadzieję na najlepsze).

Czy istnieje sposób, aby jakoś naprawić ten bałagan, czy powinienem zadzwonić do centrum danych i poprosić o format?

Mrówka
źródło
2
Czy możesz potwierdzić, czy jest to serwer fizyczny czy wirtualny? Także czy użyłeś -rargumentu rmczy naprawdę wykonałeś polecenie, które pokazujesz. Czy Twój dostawca hostingu zapewnia sposób dostępu do obrazów dysków poza tym konkretnym komputerem?
Caleb

Odpowiedzi:

26

rm /*powinien usunąć bardzo mało. Nie ma tam żadnej -rflagi, która rekurencyjnie usuwałaby cokolwiek, a bez niej katalogi nie zostaną usunięte (a nawet jeśli katalogi zostałyby usunięte, tylko puste można usunąć). Ta odpowiedź jest oparta na założeniu, że nie uruchomiłeś rm -rf /*.

Jedynymi konsekwencjami w głównym systemie plików mogą być dowiązania symboliczne do jądra i initrd (chociaż na jednym systemie Ubuntu patrzę, nie istnieją) lub /lib64dowiązanie symboliczne w systemach 64-bitowych.

Problemem może być po prostu usunięcie /lib64 -> /libdowiązania symbolicznego. To dość paskudne, ponieważ prawie każdy program będzie polegał na tym dowiązaniu symbolicznym:

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

To ld-linuxjest dynamiczny moduł ładujący, a jeśli nie jest dostępny, nie można uruchamiać żadnych dynamicznych plików wykonywalnych. To sprawi, że zalogowanie się będzie wyjątkowo trudne i może nie być w ogóle możliwe.

Może być jeden wybawca busybox. Uruchom to, aby sprawdzić:

$ ldd /bin/busybox
    not a dynamic executable

W takim przypadku busybox powinien być uruchamialny, ale pytanie brzmi: jak go uruchomić?

Jeśli masz dostęp do monitu programu ładującego, możesz być w stanie uruchomić init=/bin/static-sh, gdzie static-sh jest dowiązaniem symbolicznym busybox(sprawdź, czy /bin/static-shistnieje - działa w moim systemie, ale nie jest to standardowe Ubuntu. Ten błąd sugeruje, że jest dostępny .)

Po utworzeniu powłoki roota możesz ponownie utworzyć /lib64dowiązanie symboliczne. Konieczne może być ponowne zamontowanie głównego systemu plików jako odczyt / zapis. busybox powinien mieć wbudowane te narzędzia, które można uruchomić w następujący sposób:

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

Jeśli bash działa, problem powinien zostać rozwiązany.

camh
źródło
18

Jeśli musisz odzyskać pliki z bieżącej instalacji, poproś hosta o pomoc. Zakładając, że jest to maszyna wirtualna, obrazowanie dysku zajmuje około pięciu minut dziennie, ponowna instalacja hosta od zera i zrzucenie starego obrazu dysku w nowym systemie plików.

Jeśli niczego nie potrzebujesz, po prostu poproś o ich ponowną instalację. Prawie zawsze jest to szybsza opcja, gdy mocno kośćsz.

Oli
źródło
2
Zgodzić się. Jeśli są one odpowiednio kompetentną usługą hostingową maszyn wirtualnych, powinny być w stanie to zrobić. Skontaktuj się z nimi tak szybko, jak to możliwe, aby upewnić się, że nadal będą mieć kopię zapasową sprzed wkręcenia.
Shadur,
2

Jeśli właśnie usunąłeś dowiązanie symboliczne / lib64 do / lib i nadal masz otwartą konsolę, po prostu wykonaj:

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

i powinieneś być w stanie ponownie uruchamiać polecenia normalnie. Dostosuj ścieżkę do faktycznej biblioteki ld. Możesz także uruchomić dowolne inne polecenie, po prostu zastępując je pełną ścieżką biblioteki ld.

Neuro Mancer
źródło
1

Bez dostępu do fizycznego serwera niewiele można zrobić.

Marco Ceppi
źródło
Czy zatem powinienem poprosić o format, czy też istnieje sposób na przywrócenie tych plików bez bicia wszystkiego innego?
Ant
Zapominasz, że istnieje duże prawdopodobieństwo, że jest to serwer wirtualny, w którym to przypadku „serwer fizyczny” nie znaczy wiele poza dostępem do zdalnych narzędzi wyższego poziomu.
Caleb