Mengapa tidak ada perlindungan seperti itu di perintah rm?
Sudah ada tiga perlindungan:
-rswitch, yang tanpanya direktori tidak dapat dihapus.-iswitch, yang memverifikasi bahwa Anda benar-benar ingin menghapus apa yang Anda minta untuk dihapus. Aliasingrmkerm -imengaktifkan pengaman itu kecuali Anda menambahkan-falihkan untuk mematikannya.- Kepemilikan file, yang mencegah semua pengguna kecuali
rootdari menghapus direktori root.
Perangkat Unix seperti gergaji mesin:dirancang untuk melakukan hal-hal yang sangat kuat dan digunakan oleh orang-orang yang mengerti apa yang mereka lakukan. Mereka yang melangkah sembarangan cenderung berakhir dengan melukai diri sendiri. Ini bukan untuk mengatakan bahwa yang berpengalaman tidak membuat kesalahan, dan jelas Sun dan yang lainnya merasa bahwa pengguna dengan root perlu dilindungi dari diri mereka sendiri.
Namun bukankah seharusnya kasus khusus ini menjadi pengecualian untuk aturan itu?
Orang-orang bertanya mengapa kami tidak bisa memasang pelindung pisau di atas rm gergaji mesin setidaknya sejak 1980-an. (Mungkin lebih lama, tetapi riwayat saya dengan Unix tidak lebih dari itu.) Anda harus bertanya pada diri sendiri lebih banyak pertanyaan:
-
Karena kami menambahkan pengecualian, apa lagi yang harus dianggap suci? Haruskah kita mencegah penghapusan rekursif apa pun di direktori root untuk menghindari kesalahan yang sama-sama menghancurkan seperti
rm -rf /*? Bagaimana dengan direktori home pengguna? Bagaimana dengan/libatau/bin? Apakah kita harus memiliki versi khusus darirmuntuk mencegah kesalahan ini pada sistem dengan tata letak sistem file nontradisional? -
Di mana kita menempatkan penegakan larangan ini? Hanya di
rmatau apakah kita memberikan kernel pekerjaan itu? Sejakrmtidak benar-benar menghapus apa pun (melakukan banyak panggilan keunlink(2)danrmdir(2)berdasarkan argumen), tidak akan ada cara bagi kernel untuk mendeteksirmitu benar-benar mengincar/sampai saatnya benar-benar datang untuk menghapusnya. Sejak satu-satunya panggilan kermdir(2)yang akan berhasil adalah ketika direktori target kosong, mencapai titik itu dengan/berarti sistem sudah selesai.
Tergantung distribusinya. Linux lama yang saya gunakan saat ini mengizinkannya (menurut saya, belum mengujinya :-) ) dan menyatakan dalam man rm :
--no-preserve-root do not treat '/' specially (the default)
--preserve-root
fail to operate recursively on '/'
Pada banyak distribusi terbaru, Anda perlu menambahkan --no-preserve-root secara eksplisit untuk menonaktifkan perlindungan. Jika tidak, eksekusi akan gagal.
Mengenai Ubuntu, lihat masalah ini di mana perilaku ini dibahas.
Sejarah perlindungan ini menurut Wikipedia:
Sun Microsystems memperkenalkan
rm -rf /perlindungan di Solaris 10, pertama kali dirilis pada tahun 2005. Setelah menjalankan perintah, sistem sekarang melaporkan bahwa penghapusan/tidak diizinkan. Tak lama kemudian, fungsionalitas yang sama diperkenalkan ke dalam versi FreeBSD darirmkegunaan. GNUrmmenolak untuk mengeksekusirm -rf /jika--preserve-rootopsi diberikan, yang telah menjadi default sejak versi 6.4 dari GNU Core Utilities dirilis pada tahun 2006.