概述
DACL(Discretionary Access Control List)
This is a list that controls who can do what with your server objects. An administrator can use DCOMCNFG to configure the DACL.
有兩種類型的ACL:自由決定的(DACL)和系統的(SACL)。,。
Discretionary access control list --- 自主訪問控制列表
自主訪問控制列表(DACL)是一個最普遍類型的訪問控制列表(ACL),其通常被用於控制到計算機和網路資源的接入。
Windows中 DACL
DACL 的結構
DACL 由ACL基本信息加上 0條或者多條 ACE(Acess Control Entry) 組成
ACL 的基本信息如下:
typedef struct _ACL {
UCHAR AclRevision;
UCHAR Sbz1;
USHORT AclSize;
USHORT AceCount;
USHORT Sbz2;
} ACL;
typedef ACL *PACL;
自動名 | 解釋 |
AclRevision | ACL 的版本號,當前為 5 |
AclSize | 整個ACL數據長度,包括 ACL頭信息,以及所有ACE,以及某些空閒數據 |
AceCount | ACE 的條目數 |
DACL數據中,緊接著在ACL hear 後面的,將是一條一條的 ACE
任何一種ACE 都有一個通用的格式 ACE HEADER + ACE MASK + ACE SID
typedef struct _ACE_HEADER {
UCHAR AceType;
UCHAR AceFlags;
USHORT AceSize;
} ACE_HEADER;
AceType的種類數量表
AclRevision | AceType的種類數量 |
V2 | 4 |
V3 | 5 |
V4 | 9 |
V5 | 17 |
第2版支持的4種Ace格式
Acl Revision =2 的時候 Ace當前常用的是ACE 是4種
ACCESS_ALLOWED
ACCESS_DENIED
SYSTEM_AUDIT
SYSTEM_ALARM
對於AceType的每種取值,Ace需要不同解釋
以上4種AceType對應的結構分別如下
typedef struct _ACCESS_ALLOWED_ACE {
ACE_HEADER Header;
ACCESS_MASK Mask;
ULONG SidStart;
} ACCESS_ALLOWED_ACE;
typedef struct _ACCESS_DENIED_ACE {
ACE_HEADER Header;
ACCESS_MASK Mask;
ULONG SidStart;
} ACCESS_DENIED_ACE;
typedef struct _SYSTEM_AUDIT_ACE {
ACE_HEADER Header;
ACCESS_MASK Mask;
ULONG SidStart;
} SYSTEM_AUDIT_ACE;
typedef struct _SYSTEM_ALARM_ACE {
ACE_HEADER Header;
ACCESS_MASK Mask;
ULONG SidStart;
} SYSTEM_ALARM_ACE;