DACL(Discretionary Access Control List)
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)。
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),其通常被用于控制到计算机和网络资源的接入。
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;