เหตุใด Windows จึงประมวลผลวัตถุลูก NTFS ทั้งหมดเมื่อเปลี่ยน ACL ของผู้ปกครอง


10

เหตุใด Windows จึงประมวลผลวัตถุลูก NTFS ทั้งหมดเมื่อเปลี่ยน ACL ของผู้ปกครอง

ฉันคาดหวังว่าพฤติกรรมนี้ถ้าฉันทำเครื่องหมายในช่อง“ แทนที่สิทธิ์ของออบเจ็กต์ลูกทั้งหมด ... ” แต่แม้เมื่อไม่ได้ทำเครื่องหมายที่ช่องนั้นวินโดวส์จะประมวลผลเด็กทุกคน


@Ben เชลล์ไม่ได้ทำเพราะการเรียงซ้อนของการอนุญาตที่สืบทอดมาจะต้องทำซ้ำไปยังวัตถุลูกทั้งหมดที่มีการเปิดใช้งานสืบทอดดังนั้นจึงต้องทำแม้ในขณะที่เรียก Windows API โดยตรง FYI:มีการจำลองสิทธิ์เนื่องจากเหตุผลด้านประสิทธิภาพ
Andreas

คำตอบ:


10

ในการอนุญาตไฟล์ Windows จะไม่ได้รับมรดกแบบไดนามิก นั่นคือเมื่อมีความพยายามในการเปิดไฟล์ Windows จะดูที่ ACL ของไฟล์นั้นเท่านั้นและไม่ได้อยู่ที่ ACL ของไดเรกทอรีในแผนผังที่มีไฟล์อยู่ ซึ่งหมายความว่าเมื่อคุณเปลี่ยน ACL ของไดเรกทอรี Windows จะต้องอัปเดตสิทธิ์ของไฟล์และไดเรกทอรีย่อยทั้งหมดภายในไดเรกทอรีที่ได้รับผลกระทบทันที

ใน Windows การตั้งค่าการสืบทอดใน ACL ไม่ได้ระบุการสืบทอดแบบไดนามิกในรูปแบบใด ๆ เป็นเพียงแฟล็กเพื่อระบุว่าเมื่อ ACL ของไดเร็กทอรีพาเรนต์ถูกแก้ไขไฟล์และไดเร็กทอรีย่อยทั้งหมดในแผนผังที่มีชุดแฟล็กสืบทอดที่ต้องอัพเดตด้วย

พวกเราที่มีอายุมากพอที่จะจดจำ Novell NetWare จะจำได้ว่านี่เป็นหนึ่งในความแตกต่างที่ยิ่งใหญ่จาก NetWare เพราะในการสืบทอดสิทธิ์ของ NetWare นั้นเป็นแบบไดนามิก (คือ?) มีการถกเถียงกันอย่างมากในเวลาที่วิธีการใดดีกว่าแม้ว่าประวัติศาสตร์ได้แสดงให้เห็นถึงปัญหาที่สงสัย Dynamic ACL ต้องการให้ระบบปฏิบัติการตรวจสอบ ACL ของทุกพาเรนต์ไดเร็กทอรีในเวลาที่พยายามเปิดไฟล์ แต่การเปลี่ยน ACLs นั้นรวดเร็ว ในไฟล์เปิดของ Windows ต้องมีการตรวจสอบ ACL เพียงครั้งเดียว แต่เนื่องจากคุณพบว่าหมายถึงการเปลี่ยนไดเรกทอรี ACL อาจทำได้ช้า


1
ทำให้รู้สึกที่สมบูรณ์แบบ ACL มีการอ่านมากกว่าที่เขียนดังนั้นจึงเหมาะสมที่จะแคช "คุณค่าที่สืบทอด" เพื่อการเข้าถึงการอ่านที่เร็วขึ้นโดยมีความซับซ้อนมากขึ้นในกรณีการใช้งานการเขียนที่ยากขึ้น
Alexander - Reinstate Monica

@Alexander: สิ่งที่ฉันไม่เข้าใจคือเหตุผลที่ความซับซ้อนนี้จะต้องมีการสัมผัสกับผู้ใช้ ทำไมไม่โกหกและบอกผู้ใช้ปลายทางว่า "มันเป็นแบบไดนามิก" แต่เก็บสิ่งต่าง ๆ ไว้ภายใน?
Kevin

@Kevin - เพราะอาจต้องใช้เวลาพอสมควรในการเผยแพร่การอนุญาตและในช่วงเวลานั้นการบังคับใช้สิทธิ์อาจไม่เกิดขึ้นอย่างที่คุณคาดไว้?
davidbak

13

วัตถุลูกใด ๆ ที่ได้รับการกำหนดค่าให้สืบทอดสิทธิ์จากวัตถุแม่จะต้องถูกประมวลผล สิทธิ์ที่กำหนดไว้อย่างชัดเจนบนวัตถุลูกจะไม่ได้รับผลกระทบ

ตัวเลือก“ แทนที่สิทธิ์บนวัตถุลูกทั้งหมด” จะไม่เพียง แต่เผยแพร่สิทธิ์ไปยังวัตถุลูกทั้งหมด แต่ยังจะลบและแทนที่สิทธิ์ที่กำหนดไว้อย่างชัดเจนในวัตถุลูกทั้งหมด


5

โดยค่าเริ่มต้นโฟลเดอร์ลูกสืบทอดสิทธิ์จากโฟลเดอร์หลัก สมมติว่าขอบเขตเริ่มต้นเมื่อคุณเพิ่ม / แก้ไขสิทธิ์ในโฟลเดอร์พาเรนต์ (โฟลเดอร์นี้โฟลเดอร์ย่อยและไฟล์) จากนั้นโฟลเดอร์ย่อยทั้งหมดจะได้รับการอัปเดตเพื่อแสดงการเปลี่ยนแปลงการอนุญาตที่พาเรนต์

ช่องทำเครื่องหมายที่คุณอ้างถึงเป็นการดำเนินการ "ครั้งเดียว" ที่จะลบสิทธิ์ที่กำหนดไว้อย่างชัดเจนทั้งหมดในโฟลเดอร์ลูกทั้งหมดและแทนที่ด้วยสิทธิ์ที่สืบทอดได้จากผู้ปกครองและจะเปิดใช้งานการสืบทอดสิทธิ์ในโฟลเดอร์ลูกอีกครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.