DACL 和 ACE
如果 Windows 对象没有 自由访问控制列表(DACL),则系统允许所有人完全访问它。 如果对象具有 DACL,则系统仅允许 DACL 中 访问控制项(ACE)显式允许的访问。 如果 DACL 中没有 ACE,则系统不允许访问任何人。 同样,如果 DACL 具有允许访问有限的一组用户或组的 ACE,则系统隐式拒绝对非 ACE 中包含的所有受托人的访问权限。
在大多数情况下,可以使用允许的访问 ACE 来控制对对象的访问;无需显式拒绝对对象的访问。 例外情况是 ACE 允许访问组,并且你希望拒绝对组成员的访问权限。 为此,请将拒绝访问的 ACE 置于 DACL 中,再为组启用访问的 ACE。 请注意,ACE 的 顺序很重要,因为系统在授予或拒绝访问之前按顺序读取 ACE。 用户访问被拒绝的 ACE 必须首先出现;否则,当系统读取组的访问权限允许的 ACE 时,它将授予对受限用户的访问权限。
下图显示了拒绝访问一个用户的 DACL,并授予对两个组的访问权限。 组 A 的成员通过累积组 A 所允许的权限以及允许每个人的权限来获取读取、写入和执行访问权限。 例外是安德鲁,尽管他是每个人组的成员,但遭到访问拒绝的 ACE 的访问。
基于组成员身份授予不同访问权限的 dacl