DACL中的 ACE 順序
當 程式 嘗試存取安全性實體物件時,系統會在物件的 選擇性訪問控制清單 #DACL 找到允許或拒絕所要求存取的 ACE 之前,逐步執行 訪問控制專案(ACE)。 DACL 允許使用者的訪問許可權可能會根據 DACL 中的 ACE 順序而有所不同。 因此,Windows XP作系統會在安全性實體物件的 DACL 中定義 ACE 的慣用順序。 慣用的順序提供簡單的架構,可確保拒絕存取的 ACE 實際上會拒絕存取。 如需系統檢查存取權之演算法的詳細資訊,請參閱 DACLs 如何控制物件存取。
針對 Windows Server 2003 和 Windows XP,ACE 的正確順序會因引進物件特定的 ACE 和自動繼承而複雜。
下列步驟描述慣用的順序:
- 所有明確的 ACE 都會放在群組中,再放置於任何繼承的 ACE 之前。
- 在明確 ACE 群組中,系統會在允許存取的 ACE 之前放置拒絕存取的 ACE。
- 繼承的 ACE 會依繼承的順序排列。 從子物件的父代繼承的 ACE 先來,然後 ACE 繼承自祖父母,依序繼承物件樹狀結構。
- 對於每個繼承的 ACE 層級,在允許存取的 ACE 之前,會放置拒絕存取的 ACE。
當然,ACL 中不需要所有 ACE 類型。
AddAccessAllowedAceEx 和 AddAccessAllowedObjectAce 等函式, 將 ACE 新增至 ACL 結尾。 呼叫者有責任確保 ACE 依適當順序新增。