浅析Windows的访问权限检查机制
这篇深入剖析了Windows操作系统中访问权限检查的核心模型。作者从被保护的“对象”与发起访问的“主体”(进程/线程及其令牌)出发,清晰地勾勒出权限检查的基本逻辑:用主体的有效令牌去匹配客体的安全描述符。 文章揭示了访问权限检查是一个多维度、层层递进的体系。其中,对DACL(自主访问控制表)的检查是基石,文章特别指出DACL中访问控制项(ACE)的顺序至关重要——一个显式拒绝的条目如果排在显式允许条目之后,其效力将被完全覆盖。通过API添加ACE不受顺序限制,但通过GUI操作时,系统为确保拒绝策略的有效性,会固定将拒绝条目置于允许条目之前。 除了DACL,检查还涉及特权(如SeDebugPrivilege)、完整性级别(IL)、受限令牌以及从Win8引入的AppContainer能力检查等多个维度,这些机制共同构建了Windows的安全沙箱。文章最后展示了TOKEN结构体的具体字段,让读者得以窥见权限检查背后最核心的数据结构。整篇文章从抽象模型到具体实现,展现了Windows安全机制随时代演进的完整脉络。