DACL 中的 ACE 順序
當進程嘗試存取安全性實體物件時,系統會在物件的任意存取控制清單中執行存取控制專案 (ACE) , (DACL) ,直到找到允許或拒絕要求存取的 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 以適當的順序新增 ACE。