在 Active Directory 域服务中创建和删除对象

用于以编程方式创建和删除Active Directory 域服务中的对象的过程取决于所使用的编程技术。 有关使用特定编程技术在 Active Directory 域服务 中创建和删除对象的详细信息,请参阅下表中列出的主题。

编程技术 更多信息
Active Directory 服务界面 创建和删除对象
轻型目录访问协议 修改目录条目
System.DirectoryServices 创建、删除、重命名和移动对象

 

创建对象

一般情况下,创建对象所需的唯一属性是 cnobjectClass 属性。 但是,仅创建对象并不一定使其成为功能对象。 某些类型的对象(如用户和组)具有其他必需属性,使其正常运行。 有关创建特定类型的对象的详细信息,请参阅在域中创建用户和创建组。

Windows Server 2003:如果在 WWindows Server 2003 或更高版本上运行的域控制器上创建了用户计算机类的对象,则域控制器会自动将对象的 sAMAccountName 属性设置为唯一字符串(如果未指定)。

删除对象

删除对象时,Active Directory 服务器将执行以下操作:

  • 已删除对象的 isDeleted 属性设置为 TRUE。 将 isDeleted 属性值设置为 TRUE 的对象称为逻辑删除

  • 已删除的对象将移动到已删除的对象容器进行命名上下文。 如果对象 systemFlags 属性包含0x02000000标志,则对象不会移动到“已删除的对象”容器。 有关绑定到和枚举已删除对象容器的内容的详细信息,请参阅 检索已删除的对象

  • “已删除的对象”容器是平面的,因此所有对象都驻留在“已删除的对象”容器中的同一级别。 因此,将更改已删除对象的相对可分辨名称,以确保该名称在“已删除对象”容器中是唯一的。 如果原始名称长度超过 75 个字符,则会将其截断为 75 个字符。 然后将以下内容追加到新名称中:

    1. 0x0A字符
    2. 字符串“DEL:”
    3. 唯一 GUID 的字符串形式,例如“947e3228-70c9-4311-8b7a-e5c9b5bd4432”

    已删除的对象名称的示例为:

    Jeff Smith\0ADEL:947e3228-70c9-4311-8b7a-e5c9b5bd4432
    
  • 删除已删除对象的大多数属性值。 将自动保留以下属性:

    • attributeID
    • attributeSyntax
    • distinguishedName
    • dNReferenceUpdate
    • flatName
    • governsID
    • groupType
    • instanceType
    • lDAPDisplayName
    • legacyExchangeDN
    • mS-DS-CreatorSID
    • mSMQOwnerID
    • name
    • nCName
    • objectClass
    • objectGUID
    • objectSid
    • oMSyntax
    • proxiedObjectName
    • replPropertyMetaData
    • sAMAccountName
    • securityIdentifier
    • subClassOf
    • systemFlags
    • trustAttributes
    • trustDirection
    • trustPartner
    • trustType
    • userAccountControl
    • uSNChanged
    • uSNCreated
    • whenCreated

    还保留包含 0x00000008的 searchFlags 属性值的其他属性。

    始终从已删除的对象中删除以下属性值:

    • objectCategory
    • samAccountType
  • 将保留已删除对象的安全描述符,并且不会传播可继承的访问控制条目。 删除对象时,安全描述符按原样保留。

  • 清除指向已删除对象的链接和从中删除的对象的链接。 此操作在删除对象后在后台执行。 如果在清除所有链接之前还原已删除的对象,将收到错误。

  • 如果在 Windows Server 2003 域控制器上删除对象, 则已删除对象的 lastKnownParent 属性将设置为删除对象时包含该对象的容器的可分辨名称。

已删除的对象在称为逻辑删除生存期的一段时间内保留在“已删除对象”容器中。 默认情况下,逻辑删除生存期为 60 天,但系统管理员可以更改此值。 逻辑删除生存期到期后,该对象将从目录服务中永久删除。 为了避免缺少删除操作,应用程序必须比逻辑删除生存期更频繁地执行增量同步。

Windows Server 2003 添加了还原已删除对象的功能。 有关已删除对象还原的详细信息,请参阅 还原已删除的对象

删除项后,无法修改对象的属性。 在 Windows Server 2003 中,可以修改已删除对象的安全描述符( ntSecurityDescriptor 属性)。 这是允许在还原对象的人员没有强制属性的写入权限时还原对象。 若要更新已删除对象的安全描述符,调用方除了常规 WRITE_DACWRITE_OWNER 访问外,还必须在命名上下文上具有“Reanimate Tombstone”控制访问权限。 即使安全描述符具有限制性,管理员也可以首先获取对象的所有权,假设管理员具有标准版_TAKE_OWNERSHIP_NAME权限,然后修改安全描述符。 为此,请使用ldap_modify_ext_s函数和LDAP_标准版RVER_SHOW_DELETED_OID控件。 修改列表必须包含 ntSecurityDescriptor 属性的单个属性替换项。