在 Active Directory 域服务中创建和删除对象
用于以编程方式创建和删除Active Directory 域服务中的对象的过程取决于所使用的编程技术。 有关使用特定编程技术在 Active Directory 域服务 中创建和删除对象的详细信息,请参阅下表中列出的主题。
编程技术 | 更多信息 |
---|---|
Active Directory 服务界面 | 创建和删除对象 |
轻型目录访问协议 | 修改目录条目 |
System.DirectoryServices | 创建、删除、重命名和移动对象 |
创建对象
一般情况下,创建对象所需的唯一属性是 cn 和 objectClass 属性。 但是,仅创建对象并不一定使其成为功能对象。 某些类型的对象(如用户和组)具有其他必需属性,使其正常运行。 有关创建特定类型的对象的详细信息,请参阅在域中创建用户和创建组。
Windows Server 2003:如果在 WWindows Server 2003 或更高版本上运行的域控制器上创建了用户、组或计算机类的对象,则域控制器会自动将对象的 sAMAccountName 属性设置为唯一字符串(如果未指定)。
删除对象
删除对象时,Active Directory 服务器将执行以下操作:
已删除对象的 isDeleted 属性设置为 TRUE。 将 isDeleted 属性值设置为 TRUE 的对象称为逻辑删除。
已删除的对象将移动到已删除的对象容器进行命名上下文。 如果对象 systemFlags 属性包含0x02000000标志,则对象不会移动到“已删除的对象”容器。 有关绑定到和枚举已删除对象容器的内容的详细信息,请参阅 检索已删除的对象。
“已删除的对象”容器是平面的,因此所有对象都驻留在“已删除的对象”容器中的同一级别。 因此,将更改已删除对象的相对可分辨名称,以确保该名称在“已删除对象”容器中是唯一的。 如果原始名称长度超过 75 个字符,则会将其截断为 75 个字符。 然后将以下内容追加到新名称中:
- 0x0A字符
- 字符串“DEL:”
- 唯一 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_DAC 和 WRITE_OWNER 访问外,还必须在命名上下文上具有“Reanimate Tombstone”控制访问权限。 即使安全描述符具有限制性,管理员也可以首先获取对象的所有权,假设管理员具有标准版_TAKE_OWNERSHIP_NAME权限,然后修改安全描述符。 为此,请使用ldap_modify_ext_s函数和LDAP_标准版RVER_SHOW_DELETED_OID控件。 修改列表必须包含 ntSecurityDescriptor 属性的单个属性替换项。