简介
存储在 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 不允许访问该属性,因为该属性归安全帐户管理器 (SAM) 所有。0000209A:SvcErr:DSID-031A1021,问题 5003 (WILL_NOT_PERFORM) ,数据 0 |
当管理员尝试删除对象时,它失败并出现错误0x5,这相当于“拒绝访问”。 或者,冲突的信任对象可能不会显示在 Active Directory“域和信任”管理单元中。
“错误”对话框 |
错误消息 |
操作失败。 错误代码:0x5 访问被拒绝。00000005:SecErr:DSID-031A11ED,问题 4003 (INSUFF_ACCESS_RIGHTS) ,数据 0。 |
原因
出现此问题的原因是信任对象归系统所有,并且只能由使用 Active Directory 域和信任 MMC 的管理员修改或删除。 此功能是设计使然。
解决方案
在运行 Windows Server 2019 或更高版本 Windows Server 的域控制器上安装 2024 年 5 月 14 日 Windows 更新后,现在可以使用 schemaUpgradeInProgress 操作删除孤立的信任帐户。 为此,请按以下步骤操作:
-
标识域中的孤立信任用户帐户。 例如,此输出来自 LDP.exe;显示标识信任用户的0x800的 userAccountControl 标志:
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 ) ;… -
如有必要,请将域管理员帐户从过时的信任帐户域添加到林根域中的“架构管理员”组。 (用于删除的帐户必须对 Schema NC 副本的根目录具有“Control-Schema-Master”控制访问权限,并且必须能够登录到持有孤立帐户的 DC。)
-
确保在过时信任帐户域中的可写 DC 上安装 2024 年 5 月 14 日或更高版本的 Windows 更新。
-
使用架构管理员帐户登录到该 DC。 如果在步骤 2 中向“架构管理员”组添加了帐户,请使用该帐户。
-
准备 LDIFDE 导入文件以修改 SchemaUpgradeInProgress 并删除对象。 例如,可将以下文本粘贴到 LDIFDE 导入文件中,以删除步骤 1 中标识的对象:
dn:
changetype:modify add:SchemaUpgradeInProgress SchemaUpgradeInProgress:1 -dn: CN=northwindsales$,CN=Users,DC=contoso,DC=com
changetype: delete有关 LDIFDE 语法的提示:
-
只有连字符 (“-”) 的行至关重要,因为它终止了“修改”更改类型下的一系列更改。
-
带连字符的行后面的空行也很重要,因为它显示 LDIFDE,对象上的所有修改都已完成,并且应提交更改。
-
-
使用以下语法导入 LDIFDE 文件:
ldifde /i /f nameOfLDIFFileCreatedInStep5.txt /j
注意
-
/i 参数指示导入操作。
-
/f 参数后跟文件名指示包含更改的文件。
-
后跟日志文件路径的 /j 参数将写入一个ldif.log和一个 ldif.err 文件,其中包含更新结果、过程是否奏效,如果不是,则为在 mod 期间发生的错误。
-
指定句点 (“。”) 具有 /j 参数的 将在当前工作目录中写入日志。
-
-
如有必要,请从“架构管理员”组中删除之前在步骤 2 中添加的域管理员。