文件系统中的安全描述符

Windows 文件系统可以支持存储和管理与文件系统中各个存储单元关联的安全描述符。 安全控制的粒度完全取决于文件系统。 例如:

  • 一个文件系统可能维护一个单一的安全描述符,覆盖给定存储卷上的所有内容
  • 不同的文件系统可能提供涵盖单个给定文件的不同部分的安全描述符。

大多数开发人员都熟悉的模型是现有 Windows 文件系统提供的模型:

  • NTFS 支持每个文件(或目录)安全描述符模型。 NTFS 在存储安全描述符方面非常高效,即使它被许多不同的文件使用,也只存储每个安全描述符的一个副本。

  • FAT、CDFS、UDFS 不支持安全描述符。

  • RDBSS 和 SMB 网络重定向程序提供与远程卷提供的支持相当的支持。

然而,这些文件系统并不代表 Windows 文件系统安全的所有可能实现。

Windows 安全描述符由四个不同的部分组成:

  • 对象的所有者的安全标识符 (SID)。 对象的所有者始终有权重置对象的安全性。 例如,此功能可确保可以删除对对象的所有访问。 因为即使所有者删除了执行所有操作的能力,这种固有权利也允许他们还原对对象的安全权限。

  • 对象默认组的可选安全标识符 (SID)。 组所有权的概念在 Windows 中不是必需的,但对某些应用程序很有用。

  • 描述安全描述符的审核策略的系统访问控制列表 (SACL)。

  • 描述安全描述符访问策略的自主访问控制列表 (DACL)。

下图演示了 Windows 安全描述符。

说明 Windows 安全描述符的关系图。

安全描述符是大小可变的对象,每个单独的子组件的大小也是可变的。 为了方便安全描述符的脱机存储,安全描述符可以采用自相关格式,在这种情况下,标头是缓冲区中安全描述符的特定组件的偏移量。 内存格式由指向安全描述符各个部分的指针值组成。 对于文件系统,自相关格式通常是最有用的,因为它允许从持久存储中简单存储和检索安全描述符。 生成安全描述符的应用程序更有可能使用内存中格式。 安全引用监视器提供从一种格式转换为另一种格式的转换例程。

本部分包括以下文章:

安全标识符

访问掩码

访问控制项

访问控制列表