Mengapa Windows memproses semua objek anak NTFS saat mengubah ACL orang tua?

10

Mengapa Windows memproses semua objek anak NTFS saat mengubah ACL orang tua?

Saya akan mengharapkan perilaku ini jika saya telah mencentang kotak "Ganti semua izin objek anak ...", tetapi bahkan ketika kotak itu dibiarkan tidak dicentang, Windows akan memproses semua anak.

Corey
sumber
@Ben Ini tidak dilakukan oleh shell, karena kaskade izin yang diwariskan harus direplikasi ke semua objek anak dengan mewarisi diaktifkan, sehingga harus dilakukan bahkan ketika memanggil Windows API secara langsung. FYI: Izin direplikasi untuk alasan kinerja.
Andreas

Jawaban:

10

Dalam Windows, izin file tidak diwariskan secara dinamis. Yaitu, ketika suatu upaya dilakukan untuk membuka file Windows hanya melihat ACL dari file itu dan bukan pada ACL dari direktori di pohon yang berisi file. Itu berarti ketika Anda mengubah ACL direktori Windows harus segera memperbarui izin semua file dan subdirektori dalam direktori yang terpengaruh.

Pada Windows yang mewarisi pengaturan dalam ACL tidak menunjukkan bentuk warisan dinamis. Ini hanya sebuah flag untuk menunjukkan bahwa ketika ACL direktori induk diubah semua file dan subdirektori di pohon yang memiliki set flag inherit juga harus diperbarui.

Kita yang cukup tua untuk mengingat Novell NetWare akan mengingat ini adalah salah satu perbedaan besar dari NetWare karena dalam NetWare pewarisan izin adalah (dinamis?). Ada banyak perdebatan pada saat itu tentang pendekatan mana yang lebih baik, meskipun sejarah telah membuat masalah ini diperdebatkan. ACL dinamis memerlukan OS untuk memeriksa ACL dari setiap direktori induk pada saat upaya dilakukan untuk membuka file, tetapi mengubah ACL cepat. Dalam file pembukaan Windows hanya memerlukan satu ACL untuk diperiksa, tetapi karena Anda telah menemukan itu berarti mengubah direktori ACL bisa lambat.

John Rennie
sumber
1
Ini masuk akal. ACL dibaca jauh lebih banyak daripada yang ditulisnya, jadi masuk akal untuk men-cache "nilai yang diwarisi" untuk akses baca yang lebih cepat, dengan biaya yang lebih kompleks dalam kasus penggunaan penulisan yang lebih jarang.
Alexander - Reinstate Monica
@Alexander: Yang tidak saya mengerti adalah mengapa kompleksitas ini harus diekspos kepada pengguna akhir. Mengapa tidak berbohong dan memberi tahu pengguna akhir "ini dinamis" tetapi menyimpannya secara internal?
Kevin
@Kevin - karena butuh waktu untuk menyebarkan izin dan dalam periode waktu itu Anda mungkin tidak akan mendapatkan izin seperti yang Anda harapkan?
davidbak
13

Objek anak apa pun yang dikonfigurasi untuk mewarisi izin itu dari objek induk perlu diproses. Izin yang ditentukan secara eksplisit pada objek anak tidak terpengaruh.

Opsi, "Ganti izin pada semua objek anak," tidak hanya akan menyebarkan izin ke semua objek anak, tetapi juga akan menghapus dan mengganti izin yang ditetapkan secara eksplisit pada semua objek anak.

Appleoddity
sumber
5

Secara default, folder anak mewarisi izin dari folder induk. Dengan asumsi ruang lingkup default ketika Anda menambahkan / memodifikasi izin pada folder induk (folder ini, subfolder dan file) maka semua folder anak akan diperbarui untuk mencerminkan perubahan izin pada induk.

Kotak centang yang Anda maksud adalah operasi "satu kali" yang akan menghapus semua izin yang didefinisikan secara eksplisit pada semua folder anak dan menggantinya dengan izin yang dapat diwarisi dari induk dan akan mengaktifkan kembali warisan izin pada folder anak.

joeqwerty
sumber