回想一下前面讲述的 string_aces 格式。图5 中定义了有效的 ace_types,图6 中定义了有效的 ace_flags。用于继承的 ace_flags 是 ACE 继承的决定因素。
图5 有效的 ace_types
图6 有效的 ace_flags
ACE 权利由字符串表明,该字符串指出 ACE 控制的访问权利。它可以是访问权利的十六进制字符串表示(例如“0x7800003F”),也可以是连续的 Rights 字符串(例如“CCLCSWLOCRRC”),稍后我将介绍后面这种格式。十六进制表示及其各个数位的值如图7所示。
图7 ACL 访问掩码
系统对所有对象使用一种 ACE 权利位图表示。对不同的对象来说,并不是所有的位都有意义。只应用那些适用于某个对象的权利。标准权利是对所有安全对象都通用的权限。泛型权利是为各种对象指定相似类型权利的简便方法。泛型权利的规范映射为一组适当的具体权限集合。当指定 SACL 时,完整性标签也将使用 ACE 权利字段进行编码。图8 中列出了各种对象的可用权利。
图8 泛型权利
许多对象都可以分配权利。除文件和目录外,还有注册表项、进程、桌面等。要查看完整的列表,请参阅图 A 到图 J。我们将会讨论文件系统和注册表的权限,图9和图10中提供了这些对象的特定权利。
图9 特定文件权利
图10 特定注册表权利
完整性标签及其用法
前面提到过,如果存在完整性标签,则它将存储在对象的 SACL 中。对象隐含具有中级完整性,因此如果某个对象没有完整性标签,则它将具备中级完整性。同样地,如果安全令牌没有完整性标签,则它也将具备中级完整性。低级完整性标签用于标记低权利进程,例如低权利 Internet Explorer 及相关的非受信对象。“高级”和“系统”级别用于帮助将这些对象从中级和低级进程和对象中隔离出来。完整性标签如图11所示。
图11 完整性标签
Object_guid 和 inherit_object_guid
Object_guid 和 inherit_object_guid 用于指定 Active Directory 中对象的安全性。不会使用它们来保护文件系统和注册表安全。ACE 字符串内 ace_type 字段中的“OA”和“OD”分别对应于对象允许和对象拒绝 ACE。在本例中,object_guid 持有正在请求权限的对象的 guid,而 inherit_object_guid 持有它所继承权限的那个对象的 guid。
ACE 结构中的 account_sid 字段代表将授予或拒绝 ACE 中所指定访问权利的安全主体。account_sid 字段可能持有某个 SID,它可能是对用户基本无用的长结构标识符,或者是某个通用帐户的简写“SID 字符串”标记。只要有利于增加系统的可读性,就可以使用通用帐户的 SID 字符串标记。通用或公认帐户及其 SID 字符串表如图 J 所示。
“所有者权利”的 OW 声明是 Windows Server 2008 和 Windows Vista 中新增的声明。在以前版本中,对象的创建者/所有者 (CO) 具有读控制 (RC) 标准权限和对该对象的 Write_DAC (WD) 权限,以便所有者能够设置该对象的安全性。如果用户是某个组的成员并创建了大量对象,这种方法会出现问题。如果该用户离开该组,他可能仍然会拥有对这些对象的控制,因为他是这些对象的所有者,所以可以获得这些对象的 RC 和 Write_DAC 权限。对 OW 所有者的 ACE 限制可以防止向所有者隐性授予 RC/WD 权限,除非在 ACL 中向任何其它相关 ACE 的所有者 ACE 显式授予这些权限。这种方法可以抑制以前版本中的安全隐患。 9 7 3 1 2 3 4 5 6 7 4 8 :
本文来源:不详 作者:佚名