GNU/Linux >> Belajar Linux >  >> Linux

Mengapa Rm -rf Dan Bukan Rmdir -rf?

Saya selalu penasaran mengapa perintah untuk menghapus semua yang ada di direktori adalah rm -rf .

Mengapa tidak ada tanda untuk melakukan hal yang sama dengan rmdir ?

Bukankah lebih intuitif untuk menggunakan rmdir untuk operasi direktori?

Jawaban yang Diterima:

Pada awal Sistem File Unix (setidaknya pada hari-hari V7 sekitar tahun 1970) direktori diimplementasikan sebagai file khusus dan hanya root yang dapat menggunakan mknod(2) panggilan sistem yang membuatnya dan hanya root yang dapat unlink(2) file khusus direktori.

Perlindungan ini diterapkan untuk menjaga struktur sistem file tetap konsisten. Misalnya, jika pengguna diizinkan untuk menulis ke file khusus direktori, ia dapat membuat direktori induknya .. menunjuk ke dirinya sendiri (khususnya i-node-nya sendiri). Ini akan membuat referensi melingkar di sistem file yang akan menjadi Hal Buruk. Tentu saja ada inkonsistensi lain yang bisa dibuat, ini hanya contoh yang jelas.

Konsistensi dipertahankan oleh program ruang pengguna seperti mkdir(1) dan rmdir(1) yang merupakan root Set-UID sehingga mereka dapat melakukan panggilan sistem dengan hak istimewa atas nama pengguna yang tidak memiliki hak. Ketika rekursi ditambahkan ke rm(1) , perintah remove akan dijalankan sebagai UID saat ini dan kemudian memanggil rmdir(1) hanya untuk menghapus direktori kosong. Ini masih merupakan metode peningkatan izin yang cukup standar:jangan gunakan izin lebih dari yang Anda butuhkan.

Beberapa saat kemudian mkdir(2) dan rmdir(2) ditambahkan sebagai panggilan sistem mereka sendiri tetapi hubungan antara rm(1) dan rmdir(1) tersisa.

Secara pribadi, saya merasa lebih puas dengan rmdir junk dan tahu bahwa yang terburuk yang saya lakukan adalah menghapus direktori kosong.


Linux
  1. $var Vs ${var} Dan Mengutip Atau Tidak Mengutip?

  2. Ssh Dan Izin Direktori Rumah?

  3. Mengapa `keluar &` Tidak Berfungsi?

  1. Cara menjalankan perintah "find" hanya pada direktori saat ini dan bukan pada sub-direktori

  2. Temukan dan ganti nama direktori

  3. Mengapa tautan simbolis saya membuat file dan bukan folder?

  1. Hashing Kata Sandi Dan Mengapa Kami Membutuhkannya

  2. Menggunakan chown untuk mengubah pemilik grup direktori tidak diizinkan....Mengapa?

  3. Mengapa crontab saya tidak berfungsi, dan bagaimana cara mengatasinya?