Saya telah melihat beberapa pertanyaan di sini di mana orang tidak sengaja melakukan rm -rf --no-preserve-root
atau rm -rf *
, menghapus sebagian besar atau semua sistem file mereka sebelum mereka dapat bereaksi.
Adakah alasan untuk menggunakannya --no-preserve-root
, apakah dalam penggunaan normal, sebagai pengembang atau sebagai administrator?
/
, tetapi »kasus umum« masih diwakili. Dengan kata lain: »Bukan tugas komputer saya untuk mengatakan apa yang harus saya lakukan.« Dan seharusnya tidak.Jawaban:
PENTING: Sistem UEFI modern memasang firmware di bawah
/sys
direktori dan membuatnya tersedia untuk OS. JANGAN jalankan perintah ini pada sistem modern karena ini akan menghapus firmware ini, pada dasarnya merusak mesin Anda.Skenario paling sederhana yang dapat saya pikirkan adalah seseorang yang ingin menghapus semua data dari drive mereka. Mungkin ada alasan sah untuk melakukan ini dan cara paling sederhana yang bisa saya pikirkan adalah
Ternyata yang ini benar-benar diberikan sebagai contoh di
info rm
:Alasan lain yang sangat bagus adalah Anda ingin menghapus sistem file yang terpasang yang sudah Anda
chroot
gunakan. Dalam hal ini,rm -rf --no-preserve-root /
akan menghapus sistem dichroot
lingkungan tetapi akan membuat sistem Anda tetap utuh.Saya yakin ada lebih banyak alasan yang mungkin, tetapi secara umum tampaknya pendekatan yang sangat masuk akal bahwa sistem saya memungkinkan saya untuk melakukan apa pun yang saya inginkan dengannya. Ini tugas saya untuk berhati-hati, sistem seharusnya hanya memungkinkan saya untuk melakukan apa yang ingin saya lakukan. Jika yang saya inginkan itu bodoh, itu masalah saya dan bukan OS.
Bagaimanapun, ini adalah pembatasan yang relatif baru, ditambahkan dalam versi 7 dari spesifikasi POSIX (yang sebelumnya ada di sini), sebelum itu
rm -rf /
adalah perintah yang benar-benar valid. Pada catatan sejarah, direktori.
dan..
selalu dilindungi darirm
, sejak 1979, ketikarm
pertama kali memperoleh kemampuan untuk menghapus direktori. Lebih lanjut tentang itu di sini .sumber
/
.rm -rf /
Anda dapat mengosongkan mesin jarak jauh di atas pemasangan NFS / CIFS / SSHFS seseorang misalnya.Keberadaan
--no-preserve-root
saklar ini bukan untuk menambah fungsionalitas tambahan tetapi untuk menimpa pengurangan fungsionalitas yang sangat waras. Switch ini kemungkinan didasarkan pada filosofi bahwa komputer harus melakukan apa yang diperintahkan dan bahwa perintah harus tersedia untuk mengekspresikan tindakan yang diinginkan. Peralihan ini pra-tanggal UEFI, dan berdasarkan pengalaman saya, saya katakan itu sudah usang.Dalam praktik modern, tanpa sakelar ini,
rm
perintah tersebut menghindari penghapusan tak disengaja dari direktori root saat menggunakan variabel yang tidak diinisialisasi atau ruang yang tersesat.Catatan kaki yang menyenangkan: Perlindungan bukanlah tujuannya. Per blog Sun Microsystems, menghapus
/
direktori secara tidak langsung akan menghapus direktori kerja saat ini, sebuah pelanggaran terhadap pertimbangan khusus yang telah dibuat untuk direktori.
dan..
. Inilah sebabnya mengapa komite standar mereka mengizinkan pengecualian khusus ini - bukan untuk mencegah kecelakaan. Perubahan ini pertama kali diperkenalkan dengan Solaris 10 build 36.http://archive.is/5lmc9
sumber
Mungkin ini bukan jawaban yang diinginkan penanya asli, tetapi ada kasus penggunaan yang perlu menghapus semua file secara rekursif dari direktori root. Meskipun tidak melalui
rm
perintah, ini merupakan bagian dari proses switch_root (8) selama proses boot sistem Linux Anda (yang tidak tertanam).sumber