原文:[url]http://support.microsoft.com/?kbid=840001[/url]

概要

您可以使用两种方法来还原已删除的用户帐户、计算机帐户和安全组。这些对象统称为安全主体。在这两种方法中,您可以权威性地还原已删除的对象,然后还原已删除安全主体的组成员身份信息。还原已删除对象时,您必须还原受影响安全主体先前的 membermemberOf 属性值。这两种方法是:
方法 1:还原已删除的用户帐户,然后将已还原用户添加至原来的组中
方法 2:权威性地还原两次已删除的用户帐户和已删除用户的安全组
方法 1 更适用于域用户和管理员,因为它可以保留自上次系统状态备份到删除发生期间向安全组添加的内容。方法 2 中无需对安全主体进行单独调整,只是将安全组成员身份还原到他们上次备份时所处的状态。

如果您不具有有效的系统状态备份,而且发生删除的域包含基于 Windows Server 2003 的域控制器,您可以手动或以编程方式恢复已删除的对象。您也可以使用 Repadmin 实用工具来确定删除用户的时间和位置。

多数大规模删除都是意外发生的。Microsoft 建议您采取措施,防止他人批量地删除对象。
 

更多信息

本文分步介绍如何在从 Active Directory 中删除之后还原用户帐户、计算机帐户及其组成员身份。这一情况又可以分为多种情形,用户帐户、计算机帐户或安全组可能已被单个删除,也可能组合在一起删除。无论是哪种情况,初始步骤都是一样的 — 权威性地还原(或者使用 auth restore 还原)意外删除的对象。有些已删除的对象需执行额外的操作才能还原。这些对象包括用户帐户等对象,它们包含用作其他对象属性的向后链接的属性。其中两种属性是 managedBymemberOf

将安全主体(如用户帐户、安全组或计算机帐户)添加到安全组时,您可以在 Active Directory 中进行以下更改:
1.将安全主体的名称添加到每个安全组的 member 属性中。
2.对于每个用户、计算机或安全组所属的安全组,都将向安全主体的 memberOf 属性中添加向后链接。
同样,从 Active Directory 中删除用户、计算机或组时,将进行以下操作:
1.已删除的安全主体移至已删除对象容器中。
2.从已删除的安全主体中去除大量属性值,包括 memberOf 属性。
3.从所有所属的安全组中删除已删除的安全主体。也就是说,从每个安全组的 member 属性中删除已删除的安全主体。
恢复已删除的安全主体并还原其组成员身份时,一定要记住在还原安全主体的组成员身份之前,它们都必须存在于 Active Directory 中。(该成员可能是用户、计算机或其他安全组。)从更加广泛的角度讲,还原或修改包含向前链接的对象之前,包含值为向后链接的属性的对象必须存在于 Active Directory 中。

虽然本文重点介绍如何恢复已删除的用户帐户及其在安全组中的成员身份,但本文所涉及的概念同样适用于其他对象删除操作。这些概念还适用于 Active Directory 中其属性值使用到其他对象的向前链接和向后链接的已删除对象。

您可以使用这两种方法中的任意一种来恢复安全主体。使用方法 1 时,您可以将添加到林中任一安全组的所有安全主体保留在原位置,并且只将从各自域中删除的安全主体添加至原来的安全组中。例如,您可以做一个系统状态备份,将用户添加到安全组中,然后还原系统状态备份。如果使用方法 1,您可以保留在系统状态备份创建日期和备份还原日期之间添加到包含已删除用户的安全组中的所有用户。如果使用方法 2,您可以将包含已删除用户的所有安全组的安全组成员身份恢复到系统状态备份时的状态。

 

方法 1:还原已删除的用户帐户,然后将已还原用户添加至原来的组中

使用此方法时,请执行以下高级别步骤:
1.查看用户域中是否存在没有在删除中复制的全局编录,如果存在,则阻止对该全局编录进行复制。如果不存在潜在的全局编录,则在已删除用户的主域中查找全局编录域控制器的最后一次系统状态备份。
2.权威性地还原所有已删除的用户帐户,然后对这些用户帐户进行端到端复制。
3.将所有已还原用户添回用户帐户删除之前所属域的所有组中。
要使用方法 1,请按照以下步骤操作:
1.查看已删除用户的主域中是否存在未对删除进行任何复制的全局编录域控制器。

注意:重点关注复制计划次数最少的全局编录。

如果存在一个或多个这样的全局编录,应使用 Repadmin.exe 命令行工具立即禁用入站复制。为此,请按照下列步骤操作:
a. 单击“开始”,然后单击“运行”。
b. 在“打开”框中键入 cmd,然后单击“确定”。
c. 在命令提示符下键入以下命令,然后按 Enter:
repadmin /options <recovery dc name> +DISABLE_INBOUND_REPL
注意:如果您无法立即执行 Repadmin 命令,则应断开所有到潜在全局编录的网络连接,直到您可以使用 Repadmin 禁用入站复制,然后立即恢复网络连接。
此域控制器将称为恢复域控制器。如果不存在这样的全局编录,则转到步骤 2。
2.确定是否必须暂时停止添加、删除和更改用户帐户、计算机帐户和安全组的操作,直到完成所有的恢复步骤。

为了保持最灵活的恢复路径,请暂时停止对以下项目的更改。这些更改包括域用户、技术支持管理员和发生删除的域中的管理员进行的密码重置,以及已删除用户的组中进行的组成员身份更改。请停止对以下项目的添加、删除和修改操作:
a. 用户帐户及其属性
b. 计算机帐户及其属性
c. 服务帐户
d. 安全组
如果符合下列所有条件,最好停止对林中安全组的更改:
您正在使用方法 1 通过域名 (dn) 路径来权威性地还原已删除的用户或计算机帐户。
除了潜在的恢复域控制器,已向林中所有的域控制器复制了删除。
您未权威性地还原安全组或其父容器。
如果您正在权威性地还原安全组或是承载安全组或用户帐户的组织单位 (OU) 容器,暂时停止所有这些更改。

通知适当域中的管理员和技术支持管理员以及发生删除的域中的域用户停止这些更改。
3.在发生删除的域中,创建新的系统状态备份。如果必须回滚所做的更改,您可以使用此备份。

注意:如果系统状态备份当前是删除时的状态,请跳过此步骤并转到步骤 4。

如果在步骤 1 中确定了恢复域控制器,现在将备份它的系统状态。

如果删除中复制了发生删除的域中的所有全局编录,则备份发生删除的域中全局编录的系统状态。

创建备份时,如果第一次尝试不成功,您可以将恢复域控制器恢复为当前状态,再次执行恢复计划。
4.如果无法在删除了用户的域中找到潜在全局编录域控制器,可在该域中查找全局编录域控制器的最新系统状态备份。此系统状态备份应包含已删除的对象。将此域控制器用作恢复域控制器。

只有用户域中全局编录域控制器的还原操作包含位于外部域中的安全组的全局和通用组成员身份信息。如果删除了用户的域中不存在全局编录域控制器的系统状态备份,您将无法在还原的用户帐户上使用 memberOf 属性来确定全局或通用组成员身份,或恢复外部域中的成员身份。此外,建议您查找非全局编录域控制器的最新系统状态备份。
5.如果您知道脱机管理员帐户的密码,请在 Dsrepair 模式下启动恢复域控制器。

注意:如果客户端试图在域控制器以 Dsrepair 模式启动时访问 DFS 根目录或 DFS 链接信息,可能会收到“拒绝访问”的错误消息。这种现象是设计导致的。

如果您不知道脱机管理员帐户的密码,请在恢复域控制器仍处于正常 Active Directory 模式下时重置密码。

您可以使用 setpwd 命令行工具在运行 Microsoft Windows 2000 Service Pack 2 (SP2) 及更高版本的域控制器上重置密码,或者以后当它们处于联机 Active Directory 模式下时再重置密码。

注意:Microsoft 不再支持 Windows 2000 SP2。安装最新的 Windows 2000 Service Pack 可获得此功能。

有关更改故障恢复控制台管理员密码的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
239803 ([url]http://support.microsoft.com/kb/239803/[/url]) 如何在域控制器上更改故障恢复控制台管理员密码
Windows Server 2003 域控制器的管理员可以使用 Ntdsutil 命令行工具中的 set dsrm password 命令重置脱机管理员帐户密码。

有关如何重置目录服务还原模式管理员帐户的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322672 ([url]http://support.microsoft.com/kb/322672/[/url]) 如何在 Windows Server 2003 中重置目录服务还原模式的管理员帐户密码
6.启动过程中按 F8 可以在 Dsrepair 模式下启动恢复域控制器。

注意:如果客户端试图在域控制器以 Dsrepair 模式启动时访问 DFS 根目录或 DFS 链接信息,可能会收到“拒绝访问”的错误消息。这种现象是设计导致的。

使用脱机管理员帐户登录到恢复域控制器的控制台。如果在步骤 5 中重置了密码,请使用新密码。

如果恢复域控制器是一个潜在的全局编录域控制器,请不要还原系统状态。转到步骤 7。

如果您要通过使用系统状态备份创建恢复域控制器,请立即还原在该恢复域控制器上做的最新系统状态备份。
7.权威性地还原已删除的用户帐户、计算机帐户或安全组。

注意:术语 auth restore(权威性还原)和 authoritative restore(权威性还原)都是指使用 Ntdsutil 命令行工具中的 authoritative restore 命令增加特定对象或特定容器及其所有从属对象的版本号的过程。一旦发生端到端复制,恢复域控制器本地 Active Directory 副本中的目标对象就会在所有共享该分区的域控制器上变得具有权威性。权威性还原不同于系统状态还原。系统状态还原使用系统状态备份时的对象版本填充已还原域控制器的 Active Directory 本地副本。

有关权威性地还原域控制器的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
241594 ([url]http://support.microsoft.com/kb/241594/[/url]) 如何在 Windows 2000 中对域控制器执行权威性的还原


权威性还原使用 Ntdsutil 命令行工具执行并引用已删除用户或承载已删除用户的容器的域名 (dn) 路径。

进行权威性还原时,请使用域树中尽可能低的域名 (dn) 路径,以避免恢复与删除操作无关的对象。这些对象可能包括系统状态备份完成后修改的对象。

按照以下顺序权威性地还原已删除的用户:
a. 权威性地还原每个已删除用户帐户、计算机帐户或安全组的域名 (dn) 路径。

相对于权威性地还原整个子树来说,权威性地还原特定对象花费的时间更长,但是破坏性较小。权威性地还原保存已删除对象的最不通用的父容器。

Ntdsutil 使用以下语法:
ntdsutil "authoritative restore" "restore object <object DN path>" q q
例如,要权威性地还原 Contoso.com 域的 Mayberry OU 中已删除的用户 JohnDoe,请使用以下命令:
ntdsutil "authoritative restore" "restore object cn=JohnDoe,ou=Mayberry,dc=contoso,dc=com" q q
要权威性地还原 Contoso.com 域的 Mayberry OU 中已删除的安全组 ContosoPrintAccess,请使用以下命令:
ntdsutil "authoritative restore" "restore object cn=ContosoPrintAccess,ou=Mayberry,dc=contoso,dc=com" q q


重要说明:要求使用引号。
b. 只能权威性地还原承载已删除用户帐户或组的 OU 或 Common-Name (CN) 容器。

ntdsutil "authoritative restore" 命令指向的 OU 包含您试图权威性地还原的绝大多数对象时,可以权威性地还原整个子树。最好是目标 OU 包含您试图权威性地还原的所有对象。

OU 子树上的权威性还原将还原容器中的所有属性和对象。还原系统状态备份之前所进行的任何更改都会回滚到备份完成时的值。对于用户帐户、计算机帐户和安全组,这种回滚可能意味着要丢失对密码、主目录、配置文件路径、位置、联系人信息、组成员身份以及这些对象和属性上定义的任何安全描述符所做的最新更改。

Ntdsutil 使用以下语法:
ntdsutil "authoritative restore" "restore subtree <container DN path>" q q
例如,要权威性地还原 Contoso.com 域的 Mayberry OU,请使用以下命令:
ntdsutil "authoritative restore" "restore subtree ou=Mayberry, dc=contoso,dc=com" q q
注意:对承载已删除用户或组的每个对等 OU 重复此步骤。

重要说明:还原 OU 的从属对象时,必须以显式方式,权威性地还原已删除从属对象的所有已删除父容器。
8.如果通过系统状态还原在恢复域控制器上恢复了已删除的对象,请拔掉所有为林中其他域控制器提供网络连接的网络电缆。
9.在正常 Active Directory 模式下重新启动恢复域控制器。
10.要禁用对恢复域控制器的入站复制,请键入以下命令:
repadmin /options <recovery dc name> +DISABLE_INBOUND_REPL
重新启用到已还原系统状态的恢复域控制器的网络连接。
11.将已权威性地还原的对象从恢复域控制器出站复制到域中及林中的域控制器。

在禁用入站复制恢复域控制器的同时,键入以下命令将已权威性地还原的对象推入域中所有的跨网站复制域控制器以及林中所有的全局编录:
repadmin /syncall /d /e /P <recovery dc>
如果符合下列所有条件,将使用还原及复制的已删除用户帐户重新建立组成员身份链接。转到步骤 14。

注意:如果符合以下条件中的一个或多个,请转到步骤 12。
您的林正在以 Windows Server 2003 林功能级别或 Windows Server 2003 过渡版林功能级别运行。
只删除了用户帐户或计算机帐户,未删除安全组。
在林转换到了 Windows Server 2003 林功能级别后,将已删除用户添加到了林中所有域的安全组内。
12.确定已删除用户所属的安全组,然后将其添加到这些组中。

注意:必须将在步骤 7 中权威性地还原的用户和在步骤 11 中出站复制的用户复制到所引用域控制器的域中的域控制器并复制到林中的所有全局编录域控制器中,然后您才能向组中添加用户。

如果部署了使用组提供实用工具来重新填充安全组的成员身份,请立即使用该实用工具将已删除用户还原到他们被删除之前所在的安全组中。在林的域和全局编录服务器中的所有直接和中间域控制器都已入站复制了权威性地还原的用户和所有已还原容器后,再执行此操作。

如果您没有此类实用工具,在恢复域控制器上运行时,Ldifde.exe 命令行工具和 Groupadd.exe 命令行工具可以自动完成此这项任务。这些工具可以通过 Microsoft 产品支持服务获得。在这种情况下,Ldifde.exe 将创建一个包含用户帐户名称及其安全组的 LDAP 数据交换格式 (LDIF) 信息文件,首先从管理员指定的 OU 容器开始。然后,Groupadd.exe 将读取 .ldf 文件中列出的每个用户帐户的 memberOf 属性,并为林中每个域生成独立的、唯一的 LDIF 信息。此 LDIF 信息包括需要将已删除用户添回其中以便恢复用户组成员身份的安全组的名称。在此恢复阶段,请按照以下步骤操作。
a. 通过使用域管理员安全组中的用户帐户登录到恢复域控制器的控制台。
b. 使用 Ldifde 命令转储先前删除的用户帐户名称及其 memberOf 属性,首先从发生删除的最顶端 OU 容器开始。Ldifde 命令使用下面的语法:
ldifde -d <dn path of container that hosts deleted users> -r "(objectClass=user)" -l memberof -p subtree -f user_membership_after_restore.ldf
如果将已删除的计算机帐户添加到了安全组中,请使用下面的语法:
ldifde -d <dn path of container that hosts deleted users> -r "(objectClass=computer)" -l memberof -p subtree -f computer_membership_after_restore.ldf
c. 运行 Groupadd 命令,创建另一个包含域名和已删除用户所在的全局及通用安全组名称的 .ldf 文件。Groupadd 命令使用下面的语法:
Groupadd / after_restore users_membership_after_restore.ldf
如果将已删除的计算机帐户添加到了安全组中,请重复此命令。
d. 将您在步骤 12 中创建的 Groupadd_fully.qualified.domainname.ldf 文件导入对应于每个域的 .ldf 文件的单个全局编录域控制器中。使用以下 Ldifde 语法:
Ldifde –i –k –f Groupadd_ <fully.qualified.domain.name>.ldf
为所有域控制器(恢复域控制器除外)上、已从其中删除用户的域运行 .ldf 文件。
e. 在用于导入特定域的 Groupadd_<fully.qualified.domain.name>.ldf 文件的每个域控制器的控制台上,使用以下命令将添加的组成员身份出站复制到域中的其他域控制器以及林中的全局编录域控制器:
repadmin /syncall /d /e /P <recovery dc>
13.使用以下命令启用对恢复域控制器的入站复制:
repadmin /options <recovery dc name> -DISABLE_INBOUND_REPL
14.如果将已删除用户添加到了外部域的本地组中,请执行以下操作之一:
将已删除用户手动添回这些组中。
还原系统状态,并权威性地还原包含已删除用户的每个本地安全组。
15.验证恢复域控制器的域及其他域中全局编录中的组成员身份。
16.为恢复域控制器的域中的域控制器创建新的系统状态备份。
17.通知林中所有林管理员、受委托的管理员、林中的技术支持管理员和域中的用户,用户还原已完成。

技术支持管理员可能必须重置那些系统还原后域密码发生更改的已权威性地还原的用户帐户和计算机帐户的密码。

在系统状态备份之后更改密码的用户可能会发现他们的新密码不再有效了。如果这些用户知道旧密码,可以请他们使用旧密码尝试登录。否则,技术支持管理员必须重置密码并选择“用户下次登录时须更改密码”复选框,最好是在用户登录的同一 Active Directory 站点中的域控制器上。
 

方法 2:权威性地还原两次已删除的用户和已删除用户的安全组

使用此方法时,需执行以下高级别步骤:
1.查看用户域中的全局编录是否未在删除中复制,如果尚未复制,则阻止域控制器入站复制该删除。如果不存在潜在的全局编录,则在已删除用户的主域中查找全局编录域控制器的最后一次系统状态备份。
2.权威性地还原所有已删除的用户帐户和已删除用户的域中的所有安全组。
3.等待将已还原用户和安全组端到端复制到已删除用户的域中的所有域控制器中和林的全局编录域控制器中。
4.重复步骤 2 和步骤 3 以权威性地还原已删除的用户和安全组。(只能进行一次系统状态还原。)
5.如果已删除用户是其他域中的安全组的成员,则权威性地还原这些域中包含已删除用户的所有安全组。或者,如果系统状态备份是最新的,则权威性地还原这些域中的所有安全组。
为了满足必须在安全组之前还原已删除的组成员以便修复组成员身份链接这一要求,在此方法中您需要将这两种对象类型还原两次。第一次还原将所有用户帐户和组帐户放置在适当的位置上,第二次还原将还原已删除的组并修复组成员身份信息,包括嵌套组的成员身份信息。

要使用方法 2,请执行以下操作:
1.查看已删除用户主域中是否存在全局编录域控制器以及是否尚未对删除进行任何复制。

注意:重点关注复制计划次数最少的域中的全局编录。如果存在这些域控制器,应使用 Repadmin.exe 命令行工具立即禁用入站复制。为此,请按照下列步骤操作:
a. 单击“开始”,然后单击“运行”。
b. 在“打开”框中键入 command,然后单击“确定”。
c. 在命令提示符下键入 repadmin /options <recovery dc name> +DISABLE_INBOUND_REPL,然后按 Enter。

注意:如果您无法立即运行 Repadmin 命令,则断开所有到域控制器的网络连接,直到您可以使用 Repadmin 禁用入站复制,然后立即恢复网络连接。
此域控制器将称为恢复域控制器。
2.在完成所有恢复步骤之前,避免对以下项目进行任何添加、删除和更改操作。这些更改包括域用户、技术支持管理员和发生删除的域中的管理员进行的密码重置,以及已删除用户的组中进行的组成员身份更改。
a. 用户帐户及其属性
b. 计算机帐户及其属性
c. 服务帐户
d. 安全组

注意:尤其应避免更改发生删除的林中的用户、计算机、组和服务帐户的组成员身份。
e. 向林中的所有林管理员、受委托的管理员和技术支持管理员通知临时停机。
方法 2 中要求临时停机,这是因为您要权威性地还原所有已删除用户的安全组。因此,系统状态备份之后对组进行的任何更改都将丢失。
3.在发生删除的域中,创建新的系统状态备份。如果必须回滚所做的更改,您可以使用此备份。

注意:如果系统状态备份是发生删除时的状态,跳过此步骤,转到步骤 4。

如果在步骤 1 中确定了恢复域控制器,现在将备份它的系统状态。

如果位于发生删除的域中的所有全局编录都复制了该删除,则备份发生删除的域中全局编录的系统状态。

创建备份时,如果第一次尝试不成功,您可以将恢复域控制器恢复为当前状态,再次执行恢复计划。
4.如果无法在删除了用户的域中找到潜在全局编录域控制器,可在该域中查找全局编录域控制器的最新系统状态备份。此系统状态备份应包含已删除的对象。将此域控制器用作恢复域控制器。

只有用户域中的全局编录域控制器的数据库包含林中外部域的组成员身份信息。如果删除了用户的域中不存在全局编录域控制器的系统状态备份,您将无法在还原的用户帐户上使用 memberOf 属性来确定全局或通用组成员身份,或恢复外部域中的成员身份。转到下一个步骤。如果外部域中存在组成员身份的外部记录,请在还原用户帐户之后,将已还原用户添加到这些域中的安全组中。
5.如果您知道脱机管理员帐户的密码,请在 Dsrepair 模式下启动恢复域控制器。

注意:如果客户端试图在域控制器以 Dsrepair 模式启动时访问 DFS 根目录或 DFS 链接信息,可能会收到“拒绝访问”的错误消息。这种现象是设计导致的。

如果您不知道脱机管理员帐户的密码,请在恢复域控制器仍处于正常 Active Directory 模式下时重置密码。

您可以使用 setpwd 命令行工具在运行 Microsoft Windows 2000 Service Pack 2 (SP2) 及更高版本的域控制器上重置密码,或者以后当它们处于联机 Active Directory 模式下时再重置密码。

注意:Microsoft 不再支持 Windows 2000 SP2。安装最新的 Windows 2000 Service Pack 可获得此功能。

有关更改故障恢复控制台管理员密码的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
239803 ([url]http://support.microsoft.com/kb/239803/[/url]) 如何在域控制器上更改故障恢复控制台管理员密码
Windows Server 2003 域控制器的管理员可以使用 Ntdsutil 命令行工具中的 set dsrm password 命令重置脱机管理员帐户密码。

有关如何重置目录服务还原模式管理员帐户的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322672 ([url]http://support.microsoft.com/kb/322672/[/url]) 如何在 Windows Server 2003 中重置目录服务还原模式的管理员帐户密码
6.启动过程中按 F8 可以在 Dsrepair 模式下启动恢复域控制器。

注意:如果客户端试图在域控制器以 Dsrepair 模式启动时访问 DFS 根目录或 DFS 链接信息,可能会收到“拒绝访问”的错误消息。这种现象是设计导致的。

使用脱机管理员帐户登录到恢复域控制器的控制台。如果在步骤 5 中重置了密码,请使用新密码。

如果恢复域控制器是一个潜在的全局编录域控制器,请不要还原系统状态。直接转到步骤 7。

如果您要通过使用系统状态备份创建恢复域控制器,请立即还原包含已删除对象的恢复域控制器的最新系统状态备份。
7.权威性地还原已删除的用户帐户、计算机帐户或安全组。

注意:术语 auth restore(权威性还原)和 authoritative restore(权威性还原)都是指使用 Ntdsutil 命令行工具中的 authoritative restore 命令增加特定对象或特定容器及其所有从属对象的版本号的过程。一旦发生端到端复制,恢复域控制器本地 Active Directory 副本中的目标对象就会在所有共享该分区的域控制器上变得具有权威性。权威性还原不同于系统状态还原。系统状态还原使用系统状态备份时的对象版本填充已还原域控制器的 Active Directory 本地副本。

有关权威性地还原域控制器的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
241594 ([url]http://support.microsoft.com/kb/241594/[/url]) 如何在 Windows 2000 中对域控制器执行权威性的还原


权威性还原是通过引用已删除用户或承载已删除用户的容器的域名 (dn) 路径,使用 Ntdsutil 命令行工具执行的。

进行权威性还原时,请使用域树中尽可能低的域名 (dn) 路径,以避免恢复与删除操作无关的对象。这些对象可能包括系统状态备份完成后修改的对象。

按照以下顺序权威性地还原已删除的用户:
a. 权威性地还原每个已删除用户帐户、计算机帐户或已删除安全组的域名 (dn) 路径。

相对于权威性地还原整个子树来说,权威性地还原特定对象花费的时间更长,但是破坏性较小。权威性地还原保存已删除对象的最不通用的父容器。

Ntdsutil 使用以下语法:
ntdsutil "authoritative restore" "restore object <object DN path>" q q
例如,要权威性地还原 Contoso.com 域的 Mayberry OU 中已删除的用户 JohnDoe,请使用以下命令:
ntdsutil "authoritative restore" "restore object cn=JohnDoe,ou=Mayberry,dc=contoso,dc=com" q q
要权威性地还原 Contoso.com 域的 Mayberry OU 中已删除的安全组 ContosoPrintAccess,请使用以下命令:
ntdsutil "authoritative restore" "restore object cn=ContosoPrintAccess,ou=Mayberry,dc=contoso,dc=com" q q


重要说明:要求使用引号。

使用此 Ntdsutil 格式,您还可以为批处理文件或脚本中的许多对象执行自动权威性还原。
b. 只能权威性地还原承载已删除用户帐户或组的 OU 或 Common-Name (CN) 容器。

Ntdsutil Authoritative restore 命令指向的 OU 包含您试图权威性地还原的绝大多数对象时,可以权威性地还原整个子树。最好是目标 OU 包含您试图权威性地还原的所有对象。

OU 子树上的权威性还原将还原容器中的所有属性和对象。还原系统状态备份之前所进行的任何更改都会回滚到备份完成时的值。对于用户帐户、计算机帐户和安全组,这种回滚可能意味着要丢失对密码、主目录、配置文件路径、位置、联系人信息、组成员身份以及这些对象和属性上定义的任何安全描述符所做的最新更改。

Ntdsutil 使用以下语法:
ntdsutil "authoritative restore" "restore subtree <container DN path>" q q
例如,要权威性地还原 Contoso.com 域的 Mayberry OU,请使用以下命令:
ntdsutil "authoritative restore" "restore subtree ou=Mayberry,dc=contoso,dc=com" q q
注意:对承载已删除用户或组的每个对等 OU 重复此步骤。

重要说明:还原 OU 的从属对象时,必须以显式方式,权威性地还原已删除从属对象的所有父容器。
8.在正常 Active Directory 模式下重新启动恢复域控制器。
9.将已权威性地还原的对象从恢复域控制器出站复制到域中及林中的域控制器。

在禁用入站复制恢复域控制器的同时,键入以下命令将已权威性地还原的对象推入域中所有的跨网站复制域控制器以及林中的全局编录:
repadmin /syncall /d /e /P <recovery dc>
在林的域和全局编录服务器中的所有直接和中间域控制器都已入站复制了权威性地还原的用户和所有已还原容器后,转到步骤 11。

如果符合下列所有条件,将使用已删除用户帐户的还原重新建立组成员身份链接。转到步骤 13。
您的林正在以 Windows Server 2003 林功能级别或 Windows Server 2003 过渡版林功能级别运行。
只有安全组未被删除。
所有已删除的用户都被添加到了林中所有域的所有安全组中。
考虑使用 Repadmin 命令来加快从已还原域控制器中出站复制用户的速度。

如果同时删除了组,或者您无法保证在转换到 Windows Server 2003 过渡版或林功能级别后将已所有已删除用户添加到所有安全组,请转到步骤 12。
10.无须还原系统状态,重复步骤 7、8 和 9,然后转到步骤 11。
11.如果将已删除用户添加到了外部域的本地组中,请执行以下操作之一:
将已删除用户手动添回这些组中。
还原系统状态,并权威性地还原包含已删除用户的每个本地安全组。
12.验证恢复域控制器的域及其他域中全局编录中的组成员身份。
13.使用以下命令禁用入站复制恢复域控制器:
repadmin /options recovery dc name -DISABLE_INBOUND_REPL
14.为恢复域控制器的域中的域控制器和林中其他域中的全局编录创建新的系统状态备份。
15.通知林中所有林管理员、受委托的管理员、林中的技术支持管理员和域中的用户,用户还原已完成。

技术支持管理员可能必须重置那些系统还原后域密码发生更改的已权威性地还原的用户帐户和计算机帐户的密码。

在系统状态备份之后更改密码的用户可能会发现他们的新密码不再有效了。如果这些用户知道旧密码,可以请他们使用旧密码尝试登录。否则,技术支持管理员必须重置密码并选择“用户下次登录时须更改密码”复选框,最好是在用户登录的同一 Active Directory 站点中的域控制器上。
 

如果没有有效的系统状态备份,如何在 Windows Server 2003 域控制器上恢复已删除的用户

如果您没有删除了用户帐户或安全组的域中的当前系统状态备份,并且该删除发生在包含 Windows Server 2003 域控制器的域中,请按照以下步骤从已删除的对象容器中手动重新加进已删除对象:
1.请按照“如何在已删除对象的容器中手动撤销删除对象”部分中介绍的步骤重新加进已删除的用户、计算机、组或所有这些对象。
2.使用“Active Directory 用户和计算机”管理单元将帐户从禁用状态更改为启用状态。(帐户出现在原始 OU 中。)
3.使用 Windows Server 2003 版的“Active Directory 用户和计算机”中的批量重置功能,根据需要批量重置已删除帐户的“下次登录时须更改密码”策略设置、主目录、配置文件路径和组成员身份。您也可以通过编程方式实现这些功能。
4.如果使用 Microsoft Exchange 2000 或更高版本,请修复已删除用户的 Exchange 邮箱。
5.如果使用 Exchange 2000 或更高版本,请重新关联已删除用户和 Exchange 邮箱。
6.验证已恢复用户是否可以登录并访问本地目录、共享目录和文件。
您可以使用以下方法自动完成部分或全部恢复步骤:
编写一个自动完成步骤 1 中列出的手动恢复步骤的脚本。编写此类脚本时,请考虑按日期、时间和上次已知的父容器界定已删除对象的范围,然后自动完成对已删除对象的恢复。要自动执行恢复,请将 isDeleted 属性从 TRUE 更改为 FALSE,并将相关可分辨名称更改为在 lastKnownParent 属性中或者在新 OU 或由管理员指定的公用名 (CN) 中定义的值。(相关可分辨名称也称为 RDN。)
获取一个支持在 Windows Server 2003 域控制器上恢复已删除对象的非 Microsoft 程序。AdRestore 就是一种实用工具。AdRestore 使用 Windows Server 2003 撤销删除基元来逐个撤销删除对象。Aelita Software Corporation 和 Commvault Systems 提供的产品也在基于 Windows Server 2003 的域控制器上支持撤销删除功能。

要获得 AdRestore,请访问下面的非 Microsoft 网站:[url]http://www.microsoft.com/technet/sysinternals/utilities/AdRestore.mspx[/url] ([url]http://www.microsoft.com/technet/sysinternals/utilities/AdRestore.mspx[/url])
Microsoft 提供了第三方联系信息以便于您寻求技术支持。这些联系信息如有更改,恕不另行通知。Microsoft 不保证这些第三方联系信息的准确性。

 

如何在已删除对象的容器中手动撤销删除对象

要在已删除对象的容器中手动恢复对象,请按照以下步骤操作:
1.单击“开始”,单击“运行”,然后键入 ldp.exe

注意:如果未安装 Ldp 实用工具,请安装 Windows Server 2003 安装 CD 中的支持工具。
2.使用 Ldp 中的“连接”菜单执行到 Windows Server 2003 域控制器的连接和绑定操作。

在绑定操作期间指定域管理员凭据。
3.在“选项”菜单上,单击“控件”。
4.在“预定义加载”列表中,单击“返回已删除对象”。

注意1.2.840.113556.1.4.417 控件移到了“活动控件”窗口。
5.在“控件类型”下,单击“服务器”,然后单击“确定”。
6.在“查看”菜单上,单击“树”,键入发生删除的域中的已删除对象容器的可分辨名路径,然后单击“确定”。

注意:可分辨名路径也称为 DN 路径。例如,如果删除发生在 contoso.com 域中,DN 路径应为以下路径:
cn=deleted Objects,dc=contoso,dc=com
7.在左窗格中,双击已删除对象容器。
8.双击您要恢复或重新加进的对象。
9.右键单击要重新加进的对象,然后单击“修改”。

在一次轻型目录访问协议 (LDAP) 修改操作中更改 isDeleted 属性的值和 DN 路径。要配置“修改”对话框,请按照下列步骤操作:
a. 在“编辑条目属性”框中,键入 isDeleted

让“值”框保留为空。
b. 单击“删除”选项按钮,然后单击“输入”,制作“条目列表”对话框中两个条目中的第一个。

重要说明:不要单击“运行”。
c. 在“属性”框中,键入 distinguishedName
d. 在“值”框中,键入重新加进对象的新 DN 路径。

例如,要将 JohnDoe 用户帐户重新加进 Mayberry OU 中,请使用以下 DN 路径:
cn=JohnDoe,ou=Mayberry,dc=contoso,dc=com
注意:如果要将已删除对象重新加进其原始容器中,请在已删除对象的 CN 值后附加其 lastKnownParent 属性的值,然后将完整 DN 路径粘贴到“值”框中。
e. 在“操作”框中,单击“替换”。
f. 单击“输入”。
g. 单击以选中“同步”复选框。
h. 单击以选中“扩展”复选框。
i. 单击“运行”。
10.重新加进对象后,依次单击“选项”、“控件”,然后单击以清除“返回已删除对象”,然后单击“确定”。

清除“返回已删除对象”时,将从“活动控件”列表中删除“返回已删除对象”控件 (1.2.840.1138556.1.4.417)。
11.重置已删除用户的用户帐户密码、配置文件、主目录和组成员身份。

删除对象后,将去除除 SIDObjectGUIDLastKnownParentSAMAccountName 之外的所有属性值。
12.在“Active Directory 用户和计算机”中启用此重新加进的帐户。

注意:重新加进的对象的主 SID 与删除前相同,但是必须将该对象重新添加到同一安全组中,它才能具有相同的资源访问级别。第一版的 Windows Server 2003 不保留重新加进的用户帐户、计算机帐户和安全组的 sIDHistory 属性。带有 Service Pack 1 的 Windows Server 2003 保留已删除对象的 sIDHistory 属性。
13.删除 Microsoft Exchange 属性,将用户重新连接到 Exchange 邮箱。

注意:如果删除发生在 Windows Server 2003 域控制器上,则支持重新加进已删除的对象。如果删除发生在随后将升级到 Windows Server 2003 的 Windows 2000 域控制器上,则不支持重新加进已删除的对象。

注意:如果删除发生在域的 Windows 2000 域控制器上,lastParentOf 属性将不会填充到 Windows Server 2003 域控制器上。
 

如何确定删除发生的时间和位置

如果用户是由于批量删除而被删除的,您可能想了解删除发生的位置。为此,请按照下列步骤操作:
1.如果正确配置了审核来跟踪组织单位 (OU) 容器或从属对象的删除,请使用用于搜索发生删除的域中的域控制器的安全事件日志的实用工具。EventCombMT 就是一种这样的实用工具,它用于搜索域控制器的作用域集合上的事件日志。EventCombMT 包含在 Windows Server 2003 Resource Kit Tools 工具集中。

有关如何获取 Windows Server 2003 Resource Kit Tools 工具集的其他信息,请访问以下 Microsoft 网页:
[url]http://www.microsoft.com/windows/reskits/default.asp[/url] ([url]http://www.microsoft.com/windows/reskits/default.asp[/url])
2.按照“如何在已删除对象的容器中手动撤销删除对象”部分中介绍的步骤 1 到 7 查找已删除的安全主体。如果删除了树,请按照以下步骤查找已删除对象的父容器。
3.objectGUID 属性的值复制到 Windows 剪贴板上。

在步骤 4 中输入 Repadmin 命令时,可以粘贴此值。
4.键入下面的命令:
repadmin /showmeta GUID=<objectGUID> <FQDN>
例如,如果已删除对象或容器的 objectGUID 是 791273b2-eba7-4285-a117-aa804ea76e95,并且完全限定域名 (FQDN) 是 dc.contoso.com,请键入以下命令:
repadmin /showmeta GUID=791273b2-eba7-4285-a117-aa804ea76e95 dc.contoso.com
此命令的语法必须包括已删除对象或容器的 GUID 和您要从中选择源的服务器的 FQDN。
5.在 Repadmin 命令输出中,查找 isDeleted 属性的原始日期、时间和域控制器。例如,isDeleted 属性的信息将显示在以下样本输出的第五行中:
Loc.USN  Originating DC                  Org.USN  Org.Time/Date       Ver  Attribute
-----------------------------------------------------------------------------------------------
134759  Default-First-Site-Name\NA-DC1   134759  2004-03-15 17:41:20   1  objectClass
134760  Default-First-Site-Name\NA-DC1   134760  2004-03-15 17:41:22   2  ou
134759  Default-First-Site-Name\NA-DC1   134759  2004-03-15 17:41:20   1  instanceType
134759  Default-First-Site-Name\NA-DC1   134759  2004-03-15 17:41:20   1  whenCreated
134760  Default-First-Site-Name\NA-DC1   134760  2004-03-15 17:41:22   1  isDeleted
134759  Default-First-Site-Name\NA-DC1   134759  2004-03-15 17:41:20   1  nTSecurityDescriptor
134760  Default-First-Site-Name\NA-DC1   134760  2004-03-15 17:41:22   2  name
134760  Default-First-Site-Name\NA-DC1   134760  2004-03-15 17:41:22   1  lastKnownParent
134760  Default-First-Site-Name\NA-DC1   134760  2004-03-15 17:41:22   2  objectCategory
6.如果输出的第二列中原始域控制器的名称显示为包含 32 个字符的字母数字 GUID,请使用 Ping 命令将该 GUID 解析为发生删除的域控制器的 IP 地址和名称。Ping 命令使用下面的语法:
ping –a <originating DC GUID>._msdomain controllers. <fully qualified path for forest root domain>
注意:“-a”选项区分大小写。使用林根域的完全限定域名,而不考虑原始域控制器所在的域。

例如,如果原始域控制器位于 Contoso.com 林中的所有域内,并且其 GUID 为 644eb7e7-1566-4f29-a778-4b487637564b,键入以下命令:
ping –a 644eb7e7-1566-4f29-a778-4b487637564b._msdomain controllers.contoso.com
命令返回的输出类似于以下内容:
Pinging na-dc1.contoso.com [65.53.65.101] 
Reply from 65.53.65.101:bytes=32 time<1ms TTL=128
Reply from 65.53.65.101:bytes=32 time<1ms TTL=128
Reply from 65.53.65.101:bytes=32 time<1ms TTL=128
Reply from 65.53.65.101:bytes=32 time<1ms TTL=128
7.查看发生删除的域控制器的安全日志或步骤 5 中 Repadmin 命令的输出中显示的时间。

考虑用于到达该点的计算机之间的时差和时区更改。如果为 OU 容器或已删除对象启用删除审核,请注意相关审核事件。如果未启用审核,则应注意拥有删除 OU 容器或其中从属对象的权限并且在删除之前已经过原始域控制器身份验证的用户。
 

将来如何尽可能减小批量删除的影响

将批量删除用户、计算机和安全组的影响减到最小的关键在于,确保您拥有最新的系统状态备份,严格控制对特权用户帐户的访问和这些帐户的权限,最后还应从批量删除中实现恢复。

系统状态每天都会发生更改。这些更改可能包括用户帐户和计算机帐户上的密码重置、组成员身份更改以及用户帐户、计算机帐户和安全组上的其他属性更改。如果您的硬件发生故障、软件出现文本或您的站点遇到其他灾难,您可能想要还原在对林中每个 Active Directory 域和站点每次做出一系列显著更改之后所创建的备份。如果您没有维护当前备份,可能会丢失数据或必须回滚已还原的对象。

Microsoft 建议您执行以下步骤以避免批量删除:
1.不要共享内置管理员帐户的密码或允许共享通用管理用户帐户。如果泄漏了内置管理员帐户密码,更改该密码并定义一个防止使用该密码的内部进程。共享用户帐户的审核事件使得我们无法确定在 Active Directory 中进行更改的用户的身份。因此,必须阻止使用共享用户帐户。
2.很少会出现用户帐户、计算机帐户和安全组被有意删除的情况,而有意删除树的情况则尤为稀少。解除服务和受委托的管理员的关联,以便禁用这些对象创建和管理用户帐户、计算机帐户、安全组、OU 容器及其属性的功能。仅授予最高特权用户帐户或安全组执行树删除的权限。这些特权用户帐户可能包括企业管理员。
3.仅授予那些被允许管理受委托的管理员的对象访问已授权管理员的权限。例如,最好是主要负责修改用户帐户属性的技术支持管理员不具有创建和删除计算机帐户、安全组或 OU 容器的权限。此限制同样适用于其他特定对象类别的管理员的删除权限。
4.使用审核设置来跟踪实验室域中的删除操作。得到所需结果之后,在生产域中应用您的最佳解决方案。
5.对于拥有成千上万个对象的容器,大规模的访问控制和审核更改可能会导致 Active Directory 数据库显著增长,尤其在 Windows 2000 域中。使用镜像生产域的测试域来评估对可用磁盘空间的潜在更改。检查承载生产域中域控制器的 Ntds.dit 文件和日志文件的硬盘驱动器卷是否拥有可用磁盘空间。避免在域网络控制器顶部设置访问控制和审核更改。这些更改无须应用到该分区中所有容器中的全部类别的对象。例如,应避免更改域分区的 CN=SYSTEM 文件夹中的域名系统 (DNS) 和分布式链接跟踪 (DLT) 记录注册。
6.使用最佳 OU 结构在它们各自的组织单元中分离用户帐户、计算机帐户和服务帐户。使用此类结构时,您可以将随机访问控制列表 (DACL) 应用到委托管理这一类对象中,并在需要时根据对象类别还原对象。Best Practice Active Directory Design for Managing Windows Networks(用于管理 Windows 网络的最佳 Active Directory 设计)白皮书的“Creating an Organizational Unit Design”(创建组织单位设计)部分中讨论了最佳 OU 结构。要获取此白皮书,请访问下面的 Microsoft 网站: [url]http://www.microsoft.com/china/technet/prodtechnol/windows2000serv/plan/bpaddsgn.asp[/url] ([url]http://www.microsoft.com/china/technet/prodtechnol/windows2000serv/plan/bpaddsgn.asp[/url])
7.在镜像生产域的实验室环境中检验批量删除。选择有效的恢复方法,然后根据您的组织自定义该方法。您可能想要确定以下内容:
每个定期备份的域中的域控制器的名称
存储备份映像的位置

最好是这些映像存储在其他硬盘中,该硬盘对于林中每个域中的全局编录来说是本地硬盘。
技术支持管理要联系的成员
联系的最佳方式
8.Microsoft 发现的大多数对用户帐户、计算机帐户和安全组的批量删除都是意外发生的。与您的 IT 员工讨论这种情况并制定一个内部操作计划。最初的重点是早期检测以及尽快恢复域用户和业务的功能。
 

可帮助您从批量删除中恢复的工具和脚本

Groupadd.exe 命令行实用工具读取 OU 中用户集合的 memberOf 属性并创建将每个已还原用户帐户添加到林中每个域中的安全组中的 .ldf 文件。

Groupadd.exe 自动发现已删除用户所属的域和安全组并将它们添回这些组中。方法 1 的步骤 11 中详细说明了此过程。

Groupadd.exe 在以下域控制器上运行:
Windows Server 2003 域控制器
安装了 .NET 1.1 Framework 的 Windows 2000 域控制器
Groupadd.exe 使用以下语法:
groupadd / after_restore ldf_file [/ before_restore ldf_file]
此处, ldf_file 表示要与原来的参数一起使用的 .ldf 文件的名称, after_restore 表示用户文件数据源, before_restore 表示产品环境中的用户数据。(用户文件数据源是正确的用户数据。)