Jak daleko można się posunąć używając rm -rf / as root

23

Jeśli jesteś rootem i wydajesz

rm -rf / 

Jak daleko może się posunąć polecenie? Czy możesz odzyskać dane z tego rodzaju akcji? Czy nawet po zniknięciu plików binarnych uruchomione procesy nadal będą aktywne? Co trzeba zrobić, aby ponownie uruchomić ten sam komputer fizyczny? Jakie pliki musisz przywrócić, aby tak się stało?

Mógłbym spróbować tego na maszynie wirtualnej i zobaczyć, ale chcę poznać uzasadnienie tego, czego mogę się spodziewać, jeśli to zrobię.

Sudipta Chatterjee
źródło
3
Duplikat: superuser.com/questions/312769/...
Stéphane Gimenez
1
@Ste Prawda, ale dopóki nie jest kopiowana / wklejana, na ogół pozwalamy jej odejść, ponieważ mamy pewne nakładanie się z innymi witrynami
Michael Mrozek

Odpowiedzi:

21

To polecenie nic nie robi, przynajmniej w używanym przeze mnie systemie operacyjnym (Solaris), w którym ta funkcja zabezpieczeń została po raz pierwszy zaimplementowana:

# rm -rf /
rm of / is not allowed

W innych systemach * nix, zwłaszcza w Linuksie, jeśli podano wystarczającą ilość najnowszego Gnu rm, należy dodać --no-preserve-rootopcję, aby umożliwić wykonanie polecenia (lub przynajmniej uruchomienie).

Jak daleko posunąłoby się to polecenie, jest niezdefiniowany. To zależy od wielu mniej lub bardziej nieprzewidywalnych wydarzeń. Ogólnie procesy mogą działać nawet po usunięciu ich plików binarnych.

jlliagre
źródło
5
Na początku ci nie wierzyłem, ale tak jest . Trudno uwierzyć, że do 2005 roku (Sun / BSD) i 2006 (GNU) powstrzymanie tego okropnego błędu się nie wydarzyło.
amfetamachina
3
Nadal możesz użyć rm -rf /*do usunięcia WSZYSTKIEGO
Felixa Yana
1
Rzeczywiście, ale w takim przypadku nic nie może zrobić (łatwo) rm, ponieważ rozszerzenie pliku jest już wykonywane przez powłokę przed wywołaniem rm.
jlliagre
4

Nawet przy doskonałej odpowiedzi jlliagre, pamiętaj, że nadal jest to dość niebezpieczne. Zawsze sprawdzaj dokładnie, gdzie jesteś, zanim zrobisz coś takiego rm -rf. Byłoby to katastrofalne, gdybyś zrobił rm -rf *to na przykład w katalogu / usr.

Co do reszty pytań, to, co możesz odzyskać, zależy od procedur tworzenia kopii zapasowych. W większości systemów * nix nie ma prostego sposobu na odzyskanie plików i katalogów po ich usunięciu. W przeciwieństwie do dawnych czasów DOS, w których pliki często znajdowały się na dysku po wykonaniu operacji usuwania, większość systemów w dzisiejszych czasach robi rzeczy, które bardzo utrudniają odzyskiwanie. Jest to jeden z powodów, dla których usługi odzyskiwania danych są tak drogie.

Jeśli używasz maszyny wirtualnej, zalecam od czasu do czasu tworzenie migawek. Ale nic nie przebije dobrego planu tworzenia kopii zapasowych.

OldTimer
źródło
2

Jak niektórzy mówili, nadal możesz użyć sudo rm -rf /*do usunięcia czegokolwiek. Bez gwiazdki działa również w systemie OS X. Ktoś nakręcił materiał filmowy na temat niszczenia OS X Yosemite w ten sposób i jestem pewien, że system operacyjny oparty na Linuksie doświadczy tak samo.

Rzeczy powoli zaczynają przestać reagować. Nie sądzę, aby wszystko zostało usunięte, ponieważ terminal zamarł w trakcie procesu, ale wystarczyło, aby zamrozić całość i ponownie uruchomić siłę.

Próba ponownego uruchomienia powoduje tryb jednego użytkownika, taki jak ekran startowy z błędami.

TheBro21
źródło
1
Jeśli to może trochę pocieszyć, sudo rm -rf /*nie usunę ukrytych plików i katalogów w /. Nie byłoby również w stanie usunąć plików zamaskowanych przez inny punkt montowania, pliki w systemach plików tylko do odczytu lub pseudo-systemach plików, pliki niezmienne lub punkty montowania.
Stéphane Chazelas,
@ StéphaneChazelas To również było wyświetlane w nagraniu. Wystąpiły błędy w systemie plików do odczytu. Pomimo tego, że nie
kasowałem
2

Właśnie próbowałem z Ubuntu 16 i stacją roboczą vmware, a dzięki opcji no-preserve-root wyczyściłem cały dysk mojego działającego systemu Linux. po zakończeniu cała aplikacja stacji roboczej vmware stała się niestabilna, a nawet wyłączenie lub zresetowanie maszyny wirtualnej z aplikacji było niemożliwe. Odmówiono zabicia vmx, po czym działało ponowne uruchomienie hosta!

Groźba
źródło
Miły! :) Właśnie to miałem nadzieję usłyszeć od kogoś.
Sudipta Chatterjee
1

Nie można po prostu zniszczyć jego systemu, wydając go rm -rf /jako root. Początkowo polecenie zostanie wydane w trybie awaryjnym, co ograniczy użycie opcji rmon, /ale nawet --no-preserve-rootjako argument, działający system nie pozwoli na usunięcie uruchomionych procesów z dysku; jednak pozostałe programy i pliki zostaną usunięte, pozostawiając bezużyteczny system (prawie) bez programów do uruchomienia! Proszę sprawdzić zrzuty ekranowe tutaj, polecenie zostało wydane w Arch Linux w Virtual Box: http://bit.ly/q9CsA4

Abhisek De
źródło
Czy możesz gdzieś przesłać zdjęcia? Pobieranie tar, odznaczanie i przeglądanie wszystkich plików nie jest czymś, co większość ludzi zrobi. Aha i
skracacze
3
Napisałeś: „uruchomiony system nie pozwoli na usunięcie uruchomionych procesów z dysku”. Jeśli chodzi o * nix, jest to niepoprawne. To ograniczenie istnieje w systemie Windows, ale można usuwać (odłączać) pliki w systemach Unix / Linux, nawet gdy są one wykonywane.
jlliagre
2
„... działający system nie pozwoli na usunięcie działających procesów z dysku ...” Obawiam się, że to nieprawda - pliki, których nie można usunąć w twoim przykładzie, w rzeczywistości nie są w rzeczywistości „plikami” - zapewniają dostęp do urządzeń blokowych, modułów jądra i innych elementów wewnętrznych systemu. Wykonanie na nich operacji usuwania nie ma sensu i nie można tego zrobić nawet jako root.
Nathan Osman
Oto zdjęcia Abhiseka udostępnione w galerii online: min.us/mSQcqHGQA min.us/moyPvnYOw (na prośbę TheLQ)
Artem Pelenitsyn