Seberapa jauh Anda bisa menggunakan rm -rf / sebagai root

23

Jika Anda root, dan Anda mengeluarkan

rm -rf / 

Lalu seberapa jauh perintah itu bisa berjalan? Bisakah Anda memulihkan data dari tindakan semacam ini? Bahkan setelah binari hilang, apakah proses yang berjalan masih aktif? Apa yang diperlukan untuk membuat mesin fisik yang sama boot lagi? File apa yang perlu Anda pulihkan untuk mewujudkannya?

Saya bisa mencoba ini pada VM dan melihat, tapi saya ingin tahu alasan di balik apa yang diharapkan jika saya melakukan ini.

Sudipta Chatterjee
sumber
3
Duplikat dari: superuser.com/questions/312769/…
Stéphane Gimenez
1
@Ste Benar, tetapi selama itu tidak menyalin / menempel kami biasanya membiarkannya pergi, karena kami memiliki beberapa tumpang tindih dengan situs lain
Michael Mrozek

Jawaban:

21

Perintah ini tidak melakukan apa-apa, setidaknya pada OS yang saya gunakan (Solaris) dengan mana fitur keamanan ini pertama kali diterapkan:

# rm -rf /
rm of / is not allowed

Pada * nix lain, terutama keluarga Linux, jika Gnu rm baru-baru ini disediakan, Anda perlu menambahkan --no-preserve-rootopsi untuk mengaktifkan perintah untuk menyelesaikan (atau setidaknya memulai).

Seberapa jauh perintah ini tidak ditentukan. Itu tergantung pada banyak kejadian yang tidak terduga. Secara umum, proses dapat berjalan bahkan setelah binernya dihapus.

Jlliagre
sumber
5
Awalnya tidak percaya padamu, tapi itu dia . Sulit dipercaya butuh hingga 2005 (Sun / BSD) dan 2006 (GNU) untuk menghentikan kesalahan mengerikan ini terjadi.
amphetamachine
3
Anda masih dapat menggunakan rm -rf /*untuk menghapus APA SAJA
Felix Yan
1
Memang tetapi dalam kasus itu tidak ada yang dapat (dengan mudah) dilakukan rm karena ekspansi file sudah dilakukan oleh shell sebelum rm dipanggil.
jlliagre
4

Bahkan dengan jawaban jlliagre yang luar biasa, ingat ini masih merupakan hal yang cukup berbahaya untuk dilakukan. Selalu periksa di mana Anda berada sebelum melakukan hal-hal seperti rm -rf. Ini akan menjadi bencana jika Anda melakukannya rm -rf *di direktori / usr, misalnya.

Mengenai sisa pertanyaan Anda, apa yang dapat Anda pulihkan cukup banyak tergantung pada prosedur cadangan Anda. Pada kebanyakan * nix sistem tidak ada cara sederhana untuk memulihkan file dan direktori setelah dihapus. Berbeda dengan hari-hari DOS lama di mana file sering masih di disk setelah penghapusan dilakukan, sebagian besar sistem hari ini melakukan hal-hal yang membuat pemulihan sangat sulit. Ini adalah salah satu alasan mengapa layanan pemulihan data sangat mahal.

Jika Anda menggunakan VM, saya sarankan melakukan snapshot dari waktu ke waktu paling tidak. Tetapi tidak ada yang bisa mengalahkan mengikuti rencana cadangan yang baik.

OldTimer
sumber
2

Seperti yang dikatakan beberapa orang, Anda masih dapat menggunakan sudo rm -rf /*untuk menghapus apa pun. Tanpa tanda bintang berfungsi pada OS X juga. Seseorang telah membuat rekaman tentang menghancurkan OS X Yosemite seperti ini, dan saya yakin bahwa OS berbasis Linux akan mengalami hal yang sama.

Segalanya mulai menjadi tidak responsif. Saya tidak berpikir bahwa semuanya terhapus, karena terminal membeku saat proses sedang terjadi, tapi itu cukup untuk membekukan semuanya dan melakukan restart kekuatan.

Mencoba mem-boot ulang menyebabkan mode satu pengguna seperti layar boot dengan kesalahan.

TheBro21
sumber
1
Jika itu dapat memberikan beberapa penghiburan, sudo rm -rf /*tidak akan menghapus file dan direktori tersembunyi di /. Itu juga akan gagal untuk menghapus file yang ditutupi oleh titik mount lain, file pada sistem file read-only atau sistem file pseudo-file, file yang tidak dapat diubah atau titik mount.
Stéphane Chazelas
@ StéphaneChazelas Itu juga ditampilkan di rekaman. Ada kesalahan dengan sistem file read-ony. Meskipun tidak menghapus semuanya, itu cukup untuk membekukan dan menghancurkan boot (dari sistem, bukan EFI)
TheBro21
2

Saya baru saja mencoba dengan Ubuntu 16 dan vmware workstation dan dengan opsi no-preserve-root menghapus seluruh disk sistem linux saya yang sedang berjalan. setelah itu selesai, seluruh aplikasi workstation vmware menjadi sangat tidak stabil dan bahkan mematikan atau me-reset mesin virtual dari aplikasi itu tidak mungkin. Membunuh vmx ditolak hanya host reboot yang berfungsi setelah itu!

Ancaman
sumber
Bagus! :) Ini adalah apa yang saya harapkan dari seseorang.
Sudipta Chatterjee
1

Seseorang tidak bisa menghancurkan sistemnya hanya dengan mengeluarkan rm -rf /sebagai root. Awalnya, perintah akan dikeluarkan dalam mode gagal-aman, yang akan membatasi penggunaan rmaktif /tetapi bahkan dengan --no-preserve-rootargumen, sistem yang sedang berjalan tidak akan mengizinkan penghapusan proses yang berjalan dari disk; namun, sisa program dan file akan dihapus, meninggalkan sistem yang tidak dapat digunakan dengan (hampir) tidak ada program untuk dijalankan! Silakan periksa tangkapan layar yang ditaruh di sini, perintah dikeluarkan di Arch Linux di Virtual Box: http://bit.ly/q9CsA4

Abhisek De
sumber
Bisakah Anda mengunggah gambar di suatu tempat? Mengunduh tar, tidak peduli, dan melihat semua file bukanlah sesuatu yang dilakukan kebanyakan orang. Oh dan penyingkat URL tidak diizinkan pada SE, selalu gunakan tautan asli
TheLQ
3
Anda menulis: "sistem yang sedang berjalan tidak akan mengizinkan untuk menghapus proses yang sedang berjalan dari disk". Sejauh * nix yang bersangkutan, ini tidak benar. Batasan ini ada pada Windows tetapi Anda dapat menghapus (membatalkan tautan) file di Unix / Linux bahkan ketika mereka dieksekusi.
jlliagre
2
"... sistem yang sedang berjalan tidak akan mengizinkan untuk menghapus proses yang sedang berjalan dari disk ..." Ini, saya khawatir, tidak benar - file yang tidak dapat dihapus dalam contoh Anda sebenarnya bukan 'file' yang sebenarnya - mereka menyediakan akses untuk memblokir perangkat, modul kernel, dan internal sistem lainnya. Melakukan operasi penghapusan pada mereka tidak masuk akal dan bahkan tidak dapat dilakukan root.
Nathan Osman
Berikut adalah foto-foto yang dibagikan oleh Abhisek di galeri online: min.us/mSQcqHGQA min.us/moyPvnYOw (atas permintaan TheLQ)
Artem Pelenitsyn