GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada skenario di mana rm -rf -no-preserve-root diperlukan?

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


Linux
  1. Linux – Mengapa Tidak Ada Sistem File Rootfs Di Sistem?

  2. Ke Mana File Pergi Jika Anda Memasang Drive Ke Folder Yang Sudah Berisi File??

  3. Di manakah lokasi .bashrc?

  1. Di mana saya dapat menemukan kode sumber panggilan sistem?

  2. Dari mana saya dapat menemukan kode sumber perintah cp?

  3. Apakah ada sistem file seperti git?

  1. Mkdir rekursif?

  2. Chown Only Dimana Dibutuhkan / Speedup Chown?

  3. Linux:Tempat meletakkan file swap