PENTING: Sistem UEFI modern memasang firmware di bawah /sys
direktori dan membuatnya tersedia untuk OS. JANGAN jalankan perintah ini pada sistem modern karena akan menghapus firmware ini, yang 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 yang sah untuk melakukan ini dan cara paling sederhana yang dapat saya pikirkan adalah
rm -rf --no-preserve-root /
Ternyata yang ini sebenarnya diberikan sebagai contoh di info rm
:
`--no-preserve-root'
Do not treat `/' specially when removing recursively. This option
is not recommended unless you really want to remove all the files
on your computer.
Alasan lain yang sangat bagus adalah Anda ingin menghapus sistem file terpasang yang telah Anda chroot
- masuk ke. Dalam hal ini, rm -rf --no-preserve-root /
akan menghapus sistem di chroot
lingkungan tetapi akan membuat lingkungan Anda tetap utuh.
Saya yakin ada lebih banyak alasan yang mungkin, tetapi secara umum tampaknya pendekatan yang sangat masuk akal bahwa sistem saya mengizinkan saya melakukan apa pun yang saya inginkan dengannya. Adalah tugas saya untuk berhati-hati, sistem seharusnya hanya memungkinkan saya untuk melakukan apa yang ingin saya lakukan. Jika yang saya inginkan bodoh, itu masalah saya dan bukan OSnya.
Bagaimanapun, ini adalah batasan yang relatif baru, itu ditambahkan dalam spesifikasi POSIX versi ke-7 (yang sebelumnya ada di sini), sebelum itu rm -rf /
adalah perintah yang benar-benar valid. Sebagai catatan sejarah, .
dan ..
direktori selalu dilindungi dari rm
, sejak tahun 1979, saat rm
pertama memperoleh kemampuan untuk menghapus direktori. Lebih lanjut tentang itu di sini.
Keberadaan --no-preserve-root
alihkan bukan untuk menambahkan fungsionalitas tambahan tetapi untuk mengganti penurunan fungsi yang sangat wajar. Peralihan ini kemungkinan didasarkan pada filosofi bahwa komputer harus melakukan apa yang diperintahkan dan bahwa perintah harus tersedia untuk mengekspresikan tindakan yang diinginkan. Sakelar ini sudah ada sebelum UEFI, dan berdasarkan pengalaman saya, saya katakan sekarang sudah usang.
Dalam praktik modern, tanpa sakelar ini, rm
perintah menghindari penghapusan direktori root secara tidak sengaja saat menggunakan variabel yang tidak diinisialisasi atau ruang kosong.
rm -rf /${my_directory}
rm -rf / var/log/httpd/*
Catatan kaki yang menyenangkan:Perlindungan bukanlah tujuannya. Per blog Sun Microsystems, menghapus /
direktori secara implisit akan menghapus direktori kerja saat ini, pelanggaran terhadap pertimbangan khusus yang telah dibuat untuk .
dan ..
direktori. Inilah 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