线程与安全对象之间的交互
当线程尝试使用 安全对象时,系统会在允许线程继续之前执行访问检查。 在访问检查中,系统将线程 访问令牌中的安全信息与对象的 安全描述符中的安全信息进行比较。
- 访问令牌包含 标识与线程关联的用户的安全标识符(SID)。
- 安全描述符标识对象的所有者,并包含 自由访问控制列表(DACL)。 DACL 包含 访问控制条目(ACE),每个条目指定允许或拒绝给特定用户或组的访问权限。
系统检查对象的 DACL,查找适用于线程访问令牌中的用户和组 SID 的 ACE。 系统会检查每个 ACE,直到授予或拒绝访问,或直到不再有 ACE 进行检查。 可想而知,访问控制列表(ACL)可以有多个适用于令牌的 SID 的 ACE。 如果发生这种情况,则每个 ACE 授予的访问权限会累积。 例如,如果一个 ACE 授予对组的读取访问权限,而另一个 ACE 授予对属于组成员的用户的写入访问权限,则用户可以同时具有对该对象的读取和写入访问权限。
下图显示了这些安全信息块之间的关系: