Często zastanawiałem się, jak daleko zajdzie system, jeśli uciekniesz rm -rf /
. Wątpię, aby system operacyjny mógł się skasować (?)
Pytanie dodatkowe : Czy po wykonaniu polecenia zostanie ono rm
usunięte?
Aktualizacja: Przetestowałem to w kilku głównych dystrybucjach uniksowych za pomocą VirtualBox, a odpowiedzi dokładnie opisują, co się dzieje. Jeśli podano prawidłowe parametry, rm usunie każdy fizyczny bit danych z dysku. Jednak napotkałem pewne problemy podczas korzystania z wersji rm innej niż GNU. Na przykład uważam, że BusyBox ma swoją własną wersję i nie pozwala na usunięcie tak dużo, jak to możliwe.
To pytanie było pytaniem superużytkownika tygodnia .
Przeczytaj wpis na blogu z 7 lipca 2011 r., Aby uzyskać więcej informacji, lub prześlij własne pytanie tygodnia.
źródło
sudo rm -rf /
na Linuksie Tinycore / Microcore i wydaje się, że system operacyjny chroni kilka katalogów (/ sys i innych) przed usunięciem.rm -f /bin/rm
raz. Niestety, zadziałało, a następną godzinę spędziłem na otrzymywaniu właściwej wersjirm
back z GNU coreutils.Odpowiedzi:
Jeśli masz
rm
z GNU coreutils (najprawdopodobniej jeśli jest to zwykła dystrybucja Linuksa),rm -rf /
zostanie odrzucone przez wbudowaną ochronę (według strony man i Wikipedii, nie próbowałem tego).Możesz zastąpić tę ochronę za pomocą
--no-preserve-root
.rm
usunie wszystko, co możliwe, bez zatrzymywania się po próbie usunięcia każdego pojedynczego pliku. Oczywiście nie usunie wirtualnych systemów plików takich jak/proc
i/sys
, ale to nie ma znaczenia - usunie wszystko z dysku.Po zakończeniu polecenia dysk zostanie wyczyszczony pusty, w tym system operacyjny. Jądro i bieżące procesy będą nadal działać z pamięci, ale wiele procesów umrze, ponieważ nie uzyskają dostępu do niektórych plików. System operacyjny nie uruchomi się następnym razem.
źródło
--no-preserve-root
ponieważ zwykle o tym nie wspomina.Dla tych, którzy lubią robić takie rzeczy wizualnie podczas słuchania muzyki techno.
Uruchamianie rm-rf w systemie Linux (wideo)
Punkty bonusowe, jeśli potrafisz nazwać procesy, gdy zaczynają umierać.
źródło
Skonfigurować maszynę wirtualną i spróbować zabawy?
Posunie się to daleko ... jeśli używasz GUI, możesz dobrze się bawić, zauważając, że rzeczy ulegają degradacji w sposób bardziej widoczny. (ikony w menu przestają się ładować itp.)
Jeśli pozwolisz temu odejść, system operacyjny będzie prawie niemożliwy do odzyskania, chociaż możesz łatwo odzyskać niektóre dane.
Tak czy inaczej, będziesz chciał ponownie zainstalować system operacyjny.
źródło
Cóż, wypróbowanie go na http://bellard.org/jslinux/ daje:
źródło
Pamiętam, jak to było przeżuwane
alt.sysadmin.recovery
dawno temu, kiedy nie było czegoś takiego/proc
, a/dev
był zwykłym katalogiem zawierającym wpisy dla kilku niezwykłych i-węzłów ...... ale na niektórych wariantów Uniksa (moja pamięć jest HP-UX, ale to może być całkowicie błędne), można nie usunąć ostatni wpis katalogu dla programu, który był uruchomiony. (Udostępniane biblioteki? Co to są?)
W takich systemach, jeśli rozpoczął na prowadzenie w trybie konserwacji (tak nic nie działa, ale swoją powłokę, nawet
init
, a żadne wtórne systemy plików zostały zamontowane) i nieexec /bin/rm -rf /
można byłoby w lewo z całkowicie pustym systemie plików root wyjątkiem , że/bin
i/bin/rm
będzie przetrwać.Mieszkańcy przerażającego diabelskiego klasztoru uważali to za właściwe i właściwe.
źródło
rm -rf /
nie powinno być dozwolone w najnowszych implementacjach, ponieważ sugerowano, że narusza standard POSIX:rm -rf /
ochrona „ ” na blogu Oracleźródło
/foo/..
nawet jeśli Cię nie ma/foo
. To ma nie określić, że nie wolno usunąć bieżący katalog (nprm -r `pwd`
) lub rodzica aktualnego katalogu.Jeden punkt, którego nie widziałem, zrobiony przez nikogo innego: pliki, które są obecnie otwarte (np. Sam rm), nawet jeśli zostaną usunięte, nie znikną z napędu dopóki nie zostaną zamknięte.
źródło
rm
będzie usunąć się z fs - w programie jest całkowicie załadowany do pamięci, a nie plikuZa wypróbowanie tego raz (na serwerze, co mnie wkurza), zalogowanego jako root, w terminalu stracisz prawie wszystko. Jedyną rzeczą, która nie zostanie usunięta, będzie tylko proces niezbędny dla systemu operacyjnego.
źródło
/boot
,/sbin
,/etc
,/bin
,/vmlinuz
? Bam, odszedł. Życzymy powodzenia podczas uruchamiania bez nich - w rzeczywistości powodzenia w robieniu czegokolwiek po zakończeniu usuwania.chmod -fR 777 /
jest szkodliwy, ponieważ wyłącza bity setuid i setgid.Jak daleko można się dostać, zależy to w zasadzie od konkretnych dystrybucji Unix / Linux.
Ale aby odpowiedzieć na podstawowe pytanie, tak -
rm
polecenie zostanie z nim usunięte, podobnie jak każde inne standardowe polecenie w/bin
i inne foldery.Oto prosty test, który przeprowadziłem w systemie Linux Ubuntu 15.04 przy użyciu maszyny wirtualnej.
Zainicjuj maszynę wirtualną poprzez
vagrant
:Następnie, gdy próbujesz usunąć wszystkie pliki w standardowy sposób, nie pozwala to na:
Więc spróbujmy
--no-preserve-root
. Zawsze dwukrotnie sprawdź, czy jesteś zalogowany na maszynie wirtualnej (więc maszvagrant@vagrant-ubuntu-vivid-64:~$
), a następnie uruchom (nie próbuj tego w domu):Następnie wraca do wiersza poleceń, jakby nic się nie wydarzyło, ale nie możesz już wykonywać żadnych poleceń oprócz kilku wbudowanych i
kill
, dzięki czemu możesz zakończyć pracę i zabić sesję :)Na przykład:
Więc to całkiem usunięto wszystko, w tym
rm
,ls
i wszystkie inne polecenia, ale nadal jesteś zalogowany. Istnieją pewne specjalne foldery, które nie zostały usunięte, takich jak niektóre z urządzeń/dev
,/proc
lub/sys
które nie są regularne katalogów / plików, ale to jest pseudo-systemem plików zapewniając interfejsy do procesu oraz dane jądra.Jeśli nie masz Vagrant lub Linux, możesz grać z niektórymi emulatorami JavaScript Linux x86 dla JavaScript .
Jeśli interesują Cię możliwości powrotu do zdrowia po takiej katastrofie, sprawdź:
źródło