如何对新目录对象设置安全描述符

在 Active Directory 域服务中创建新对象时,可以显式创建安全描述符,然后将该安全描述符设置为对象的 nTSecurityDescriptor 属性。 有关详细信息,请参阅为新目录对象创建安全描述符

Active Directory 域服务使用以下规则对新对象的安全描述符设置 DACL:

  • 如果在创建对象时显式指定安全描述符,则系统会将父对象中的任何可继承 ACE 合并到指定的 DACL 中,除非安全描述符的控制位中设置了 SE_DACL_PROTECTED 位。
  • 如果未指定安全描述符,系统会通过将父对象中的任何可继承 ACE 合并为该对象的类的 classSchema 对象的默认 DACL 来生成对象的 DACL。
  • 如果架构没有默认的 DACL,则对象的 DACL 是创建者的主令牌或模拟令牌的默认 DACL。
  • 如果没有指定的、继承的或默认的 DACL,系统将创建不带 DACL 的对象,这样每个人都可以完全访问该对象。

系统使用类似的算法为目录服务对象生成 SACL。

新对象安全描述符中的所有者和主组设置为创建对象时在 nTSecurityDescriptor 属性中指定的值。 如果未设置这些值,Active Directory 域服务将使用下表中列出的规则来设置这些值。

规则 说明
所有者 默认安全描述符中的所有者设置为创建过程的主令牌或模拟令牌中的默认所有者 SID。 对于大多数用户,默认所有者 SID 与标识用户帐户的 SID 相同。 请注意,对于属于内置管理员组成员的用户,系统会自动将访问令牌中的默认所有者 SID 设置为管理员组;因此,由管理员组成员创建的对象通常由管理员组拥有。 若要在访问令牌中获取或设置默认所有者,请使用 TOKEN_OWNER 结构调用 GetTokenInformationSetTokenInformation 函数。
主组 默认安全描述符中的主组设置为创建者主令牌或模拟令牌中的默认主组。 请注意,主组未在 Active Directory 域服务的上下文中使用。

 

有关 ACE 继承的详细信息,请参阅继承和委派管理

有关架构中默认安全描述符的详细信息,请参阅默认安全描述符

有关 classSchema 对象的详细信息,请参阅 Active Directory 架构