Applies ToWindows Server 2019 Windows Server 2022

简介

存储在 Active Directory 中的对象可能会因复制冲突而过时、损坏或孤立。

本文重点介绍可由 userAccountControl 属性中的“INTERDOMAIN_TRUST_ACCOUNT”位标识的信任对象。 有关此位的详细信息,请参阅 userAccountControl Bits

症状

信任关系在 Active Directory 中由以下项表示:

  • 由尾随 $ 字符所附的用户帐户。

  • 受信任的域对象 (TDO) 存储在域目录分区的系统容器中。

创建重复信任将创建两个对象,这些对象具有重复的安全帐户管理器 (SAM) 帐户名称。 第二个对象上,SAM 通过将对象重命名为 $DUPLICATE<Account RID>来解决冲突。 无法删除重复对象,并变为“孤立对象”。

注意 当 Active Directory 对象表示存储在其父容器缺失的 Active Directory 中的实时子对象时,该对象称为“孤立”。 术语有时还用于指代 Active Directory 中无法使用正常工作流删除的过时或损坏的对象。

有两种主要的过时信任方案:

  • 方案 1:信任处于冲突状态的用户

    如果存在两个林并且以前在这些林中的域之间创建了信任,则可能需要删除信任用户。 首次创建信任时,存在阻止复制的问题。 管理员可能已转移或捕获主域控制器 (PDC) 灵活单主操作 (FSMO) 角色,并在另一个域控制器 (DC) 上再次创建了信任。

    稍后,重新建立 Active Directory 复制时,两个信任用户将复制到同一 DC,从而导致命名冲突。 将为信任用户对象分配冲突 (CNF) 管理 DN;例如:

    CN=contoso$\0ACNF:a6e22a25-f60c-4f07-b629-64720c6d8b08,CN=Users,DC=northwindsales,DC=com

    samAccountName 也会显示为混乱:

    $DUPLICATE-3159f

    没有名称冲突的对象将正常显示并正常运行。 可以删除并重新创建信任。

  • 方案 2:信任用户孤立

    与方案 1 类似,如果信任和信任伙伴不再存在,但信任用户仍位于 Active Directory 数据库中,则可能需要编辑或删除信任用户。 通常,这些帐户的密码将旧,从而导致安全扫描工具标记该帐户。

管理员尝试编辑信任的属性时出现错误消息

无法更改密钥属性或删除孤立的信任用户对象。 尝试更改保护对象的属性后,出现以下错误:

“错误”对话框

错误消息

操作失败。 错误代码0x209a

操作失败。 错误代码:0x209a 不允许访问该属性,因为该属性归安全帐户管理器 (SAM) 所有。

0000209A:SvcErr:DSID-031A1021,问题 5003 (WILL_NOT_PERFORM) ,数据 0

当管理员尝试删除对象时,它失败并出现错误0x5,这相当于“拒绝访问”。 或者,冲突的信任对象可能不会显示在 Active Directory“域和信任”管理单元中。

“错误”对话框

错误消息

操作失败。 错误代码0x5

操作失败。 错误代码:0x5 访问被拒绝。

00000005:SecErr:DSID-031A11ED,问题 4003 (INSUFF_ACCESS_RIGHTS) ,数据 0。

原因

出现此问题的原因是信任对象归系统所有,并且只能由使用 Active Directory 域和信任 MMC 的管理员修改或删除。 此功能是设计使然。

解决方案

在运行 Windows Server 2019 或更高版本 Windows Server 的域控制器上安装 2024 年 5 月 14 日 Windows 更新后,现在可以使用 schemaUpgradeInProgress 操作删除孤立的信任帐户。 为此,请按以下步骤操作:

  1. 标识域中的孤立信任用户帐户。 例如,此输出来自 LDP.exe;显示标识信任用户的0x800userAccountControl 标志:

    Expanding base ' CN=northwindsales$,CN=Users,DC=contoso,DC=com'... 获取 1 个条目: Dn:CN=northwindsales$,CN=Users,DC=contoso,DC=com

    primaryGroupID:513 = ( GROUP_RID_USERS ) ; pwdLastSet: 4/27/2013 10:03:05 PM 协调世界时; sAMAccountName: NORTHWINDSALES$; sAMAccountType:805306370 = ( TRUST_ACCOUNT ) ; userAccountControl:0x820 = ( PASSWD_NOTREQD | INTERDOMAIN_TRUST_ACCOUNT ) ;…

  2. 如有必要,请将域管理员帐户从过时的信任帐户域添加到林根域中的“架构管理员”组。 (用于删除的帐户必须对 Schema NC 副本的根目录具有“Control-Schema-Master”控制访问权限,并且必须能够登录到持有孤立帐户的 DC。)

  3. 确保在过时信任帐户域中的可写 DC 上安装 2024 年 5 月 14 日或更高版本的 Windows 更新。

  4. 使用架构管理员帐户登录到该 DC。 如果在步骤 2 中向“架构管理员”组添加了帐户,请使用该帐户。

  5. 准备 LDIFDE 导入文件以修改 SchemaUpgradeInProgress 并删除对象。例如,可将以下文本粘贴到 LDIFDE 导入文件中,以删除步骤 1 中标识的对象:

    dn: changetype:modify add:SchemaUpgradeInProgress SchemaUpgradeInProgress:1 -

    dn: CN=northwindsales$,CN=Users,DC=contoso,DC=com changetype: delete

    有关 LDIFDE 语法的提示:

    • 只有连字符 (“-”) 的行至关重要,因为它终止了“修改”更改类型下的一系列更改。

    • 带连字符的行后面的空行也很重要,因为它显示 LDIFDE,对象上的所有修改都已完成,并且应提交更改。

  6. 使用以下语法导入 LDIFDE 文件:

    ldifde /i /f nameOfLDIFFileCreatedInStep5.txt /j

    注意

    • /i 参数指示导入操作。

    • /f 参数后跟文件名指示包含更改的文件。

    • 后跟日志文件路径的 /j 参数将写入一个ldif.log和一个 ldif.err 文件,其中包含更新结果、过程是否奏效,如果不是,则为在 mod 期间发生的错误。

    • 指定句点 (“。”) 具有 /j 参数的 将在当前工作目录中写入日志。

  7. 如有必要,请从“架构管理员”组中删除之前在步骤 2 中添加的域管理员。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。