SECURITY_DESCRIPTOR_CONTROL

SECURITY_DESCRIPTOR_CONTROL类型是一组限定SECURITY_DESCRIPTOR结构或其组件含义的位标志。 每个安全描述符都有一个 用于 存储 SECURITY_DESCRIPTOR_CONTROL 位的 Control 成员。

typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;

控件值可以包含以下 SECURITY_DESCRIPTOR_CONTROL 位标志的组合:

含义
SE_OWNER_DEFAULTED (0x0001) 默认机制(而不是安全描述符的原始提供程序)提供安全描述符的所有者安全标识符 (SID) 。 若要设置此标志,请使用 RtlSetOwnerSecurityDescriptor
SE_GROUP_DEFAULTED (0x0002) 默认机制(而不是安全描述符的原始提供程序)提供了安全描述符的组 SID。
SE_DACL_PRESENT (0x0004) 指示具有 DACL 的安全描述符。 如果未设置此标志,或者如果设置了此标志并且 DACL 为 NULL,则安全描述符允许对所有人进行完全访问。 此标志用于保存调用方指定的安全信息,直到安全描述符与安全对象相关联。 将安全描述符与安全对象关联后,始终会在安全描述符控制机制中设置 SE_DACL_PRESENT 标志。 若要设置此标志,请使用 RtlSetDaclSecurityDescriptor
SE_DACL_DEFAULTED (0x0008) 指示具有默认 DACL 的安全描述符。 例如,如果对象的创建者未指定 DACL,则对象将从创建者的访问令牌接收默认 DACL。 此标志可能会影响系统如何处理 DACL(与 ACE 继承有关)。 如果未设置SE_DACL_PRESENT标志,系统会忽略此标志。 此标志用于确定如何计算对象上的最终 DACL,并且不会以物理方式存储在安全对象的安全描述符控件中。 若要设置此标志,请使用 RtlSetDaclSecurityDescriptor
SE_SACL_PRESENT (0x0010) 指示具有 SACL 的安全描述符。
SE_SACL_DEFAULTED (0x0020) 默认机制(而不是安全描述符的原始提供程序)提供了 SACL。 此标志可能会影响系统在 ACE 继承方面对 SACL 的处理方式。 如果未设置SE_SACL_PRESENT标志,系统会忽略此标志。
SE_DACL_UNTRUSTED (0x0040) 指示安全描述符的 DACL 指向的 ACL 由不受信任的源提供。 如果设置了此标志,并且遇到复合 ACE,则系统会将已知的有效 SID 替换为 ACE 中的服务器 SID。
SE_SERVER_SECURITY (0x0080) 请求对象的提供程序受安全描述符保护,其 ACL 应基于输入 ACL 的服务器 ACL,而不考虑其源 (显式或默认) 。 为此,请将所有 GRANT ACE 替换为授予当前服务器的复合 ACE。 仅当使用者正在模拟时,此标志才有意义。
SE_DACL_AUTO_INHERIT_REQ (0x0100) 请求由安全描述符保护的 对象的提供程序自动将 DACL 传播到现有的子对象。 如果提供程序支持自动继承,则会将 DACL 传播到任何现有的子对象,并在对象及其子对象的安全描述符中设置SE_DACL_AUTO_INHERITED位。
SE_SACL_AUTO_INHERIT_REQ (0x0200) 请求由安全描述符保护的 对象的提供程序自动将 SACL 传播到现有的子对象。 如果提供程序支持自动继承,则会将 SACL 传播到任何现有的子对象,并在对象及其子对象的安全描述符中设置SE_SACL_AUTO_INHERITED位。
SE_DACL_AUTO_INHERITED (0x0400) 从 Windows 2000 开始,指示一个安全描述符,其中 DACL 支持将可继承的 ACE 自动传播到现有子对象。 对于支持自动连续的 Windows 2000 ACL,始终设置此位。 它用于将这些 ACL 与不支持自动遗传的 Windows NT 4.0 ACL 区分开来。 Windows NT 4.0 及更早版本的安全描述符中未设置此位,后者不支持可继承 ACE 的自动传播。
SE_SACL_AUTO_INHERITED (0x0800) 指示安全描述符,其中 SACL 支持将可继承的 ACE 自动传播到现有子对象。 仅当已为对象及其现有子对象执行自动继承算法时,才会设置此位。 此位未在 Windows NT 4.0 及更早版本的安全描述符中设置,后者不支持可继承 ACE 的自动传播。
SE_DACL_PROTECTED (0x1000) 防止安全描述符的 DACL 被可继承的 ACE 修改。
SE_SACL_PROTECTED (0x2000) 防止安全描述符的 SACL 被可继承的 ACE 修改。
SE_RM_CONTROL_VALID (0x4000) 指示安全描述符中的资源控制管理器位有效。 资源管理器控制位是SECURITY_DESCRIPTOR结构的 Sbz1 成员中的 8 位,其中包含特定于访问结构的资源管理器的信息。 有关详细信息,请参阅 Windows SDK。
SE_SELF_RELATIVE (0x8000) 指示一个自相对格式的安全描述符,其中包含连续内存块中的所有安全信息。 如果未设置此标志,则安全描述符采用绝对格式。 有关详细信息,请参阅 Windows SDK 文档。

要求

ntifs.h (包括 ntifs.h)

ACE

ACL

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

SECURITY_DESCRIPTOR