ACL结构是访问控制列表(ACL)的标题。一个完整的ACL由一个ACL结构组成,后跟一个零个或多个访问控制条目(ACE)的有序列表。
typedef struct _ACL { Specifies the ACL's revision level.
BYTE AclRevision;
BYTE Sbz1;
WORD AclSize;
WORD AceCount;
WORD Sbz2;
} ACL;
会员
AclRevision
指定ACL的修订级别。此值应为ACL_REVISION。ACL中的所有ACE必须处于相同的修订级别。
Specifies the size, in bytes, of the ACL.
指定一个零字节的填充,将AclRevision成员对齐在16位边界上。
AclSize
指定ACL的大小(以字节为单位)。此值包括ACL结构和所有ACE。
AceCount
指定存储在ACL中的ACE数。
Sbz2ru-Latn
指定两个零字节的填充,将ACL结构对齐在32位边界上。
备注
ACL包括零个或多个ACE的顺序列表。ACL中的各个ACE编号从0到【n】,其中【n】 +1是ACL中的ACE数。编辑ACL时,应用程序会通过其索引引用ACL中的ACE。
ACL有两种类型:自由和系统。
自由ACL由对象的所有者或任何人授予访问对象的WRITE_DAC控制。它指定访问特定的用户和组可以对对象。例如,文件的所有者可以使用自由ACL来控制哪些用户和组可以访问和无法访问该文件。
对象还可以具有与其相关联的系统级安全信息,以系统管理员控制的系统ACL的形式。系统ACL可以允许系统管理员审核任何访问对象的尝试。
目前定义了三种ACE结构:
ACE结构 | 描述 |
ACCESS_ALLOWED_ACE | 授予用户或组的指定权限。该ACE存储在自由ACL中。 |
ACCESS_DENIED_ACE | 拒绝对用户或组的指定权限。该ACE存储在自由ACL中。 |
SYSTEM_AUDIT_ACE | 指定什么类型的访问将导致系统级审计。此ACE存储在系统ACL中。 |
Windows NT目前不支持第四个ACE结构SYSTEM_ALARM_ACE.
ACL结构被视为不透明的应用程序,应用程序不会直接尝试与其成员一起工作。为了确保ACL在语义上是正确的,应用程序可以使用SeeAlso部分中列出的功能来创建和操作ACL。
每个ACL和ACE结构以双字边界开始。
也可以看看
AddAce, DeleteAce, GetAclInformation, GetSecurityDescriptorDacl, GetSecurityDescriptorSacl, InitializeAcl, IsValidAcl, SetAclInformation, SetSecurityDescriptorDacl, SetSecurityDescriptorSacl