windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

时间:2023-03-08 17:55:13
windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

域内所有的域控制器都有一个内容相同的Active Directory,而且 Active Directory 的内容是动态平衡的,也就是说任何一个域控制器修改了 Active Directory,其他的域控制器都会把这个 Active Directory 的变化复制过去。

今天我们要考虑这么一个问题,如果域中有多个域控制器,但他们所拥有的 Active Directory 内容不一致,那么应该以哪个域控制器的 Active Directory 内容为准?可能我们会疑惑,怎么会出现这种情况呢?其实假如有个域控制器由于更换硬件导致有几天时间没有在线,而其他的域控制器在这段时间对 Active Directory 进行了修改,那么当这个域控制器重新上线时就会出现我们所提到的这种情形。

当域控制器们发现彼此的 Active Directory 的内容不一致,他们就需要分析一下 Active Directory 的优先级,从而决定以哪个域控制器的 Active Directory 内容为准。Active Directory 的优先级比较主要考虑三方面因素,分别是:

1、版本号:版本号指的是 Active Directory 对象的修改次数,版本号高者优先。例如域中有两个域控制器 A 和 B,A 域控制器上的用户 administrator 口令被修改了 4 次,最后被改为 12345;B 域控制器上的用户 administrator 口令被修改了 5次,最后被改为 123456。那么 A 和 B 发现他们的 Active Directory 中 administrator 口令不一致,这时 A 和 B 会分析版本号,发现版本号分别是 4 和 5,这时 A就会把 B 的 Active Directory内容复制到本机的 Active Direcotry中。 经过这么一轮复制后,A 和 B 的 Active Directory 内容就达到了新的平衡,他 们 Active Directory 中所有对象的版本号也都完全一致了。

2、时间:如果 A 和 B 两个域控制器都是对 administrator 口令修改了 4 次,那么版本号 就是相同的。这种情况下两个域控制器就要比较时间因素,看哪个域控制器完成修改的时间靠后,时间靠后者优先。这里我们顺便提及一下,Active Directory 中时间是个非常重要的因素,域内计算机的时间误差不能超过 5 分钟,而且 Active Directory 还有一个墓碑时间的限制,这些我们以后再详细加以说明。

3、GUID:如果 A 和 B 两个域控制器的版本号和时间都完全一致,这时就要比较两个域控制器的 GUID 了,显然这完全是个随机的结果。一般情况下时间完全相同的非常罕见,因此 GUID 这个因素只是一个备选方案。

下面我们引入一个具体的例子让大家加深理解。

1、域中有两个域控制器 Florence 和 Firenze。

2、域中有一个用户张建国,我们在 Firenze 上对 Active Directory 已经进行了备份。

3、我们在 Florence 上不小心把张建国误删除了,显然 Firenze 会很快把 Active Directory 中的张建国也删除,以便和 Florence 的 Active Directory 保持一致。

那么我们应该怎么做才能把张建国给恢复回来呢?

可能我们会想到利用 Firenze 上的 Active Directory 备份来解决这个问题,既然备份中有张建国,那么把备份还原回来不就 OK 了吗?这个问题没这么简单,如果域中只有一个域控制器,那么用备份还原是成立的。但现在域中有两个域控制器,我们就要好好考虑一下了。

发现问题:Firenze 从备份还原后,Active Directory 中已经拥有了张建国的用户账号,但 Firenze 会和 Florence 比较 Active Directory 内容,并且Florence的版本号要高,所以Firenze 认为 Florence 的 Active Directory 比自己的优先级高,因此 Firenze 会把 Florence 的 Active Directory 复制过来, 这样一来,刚被还原的张建国肯定会被重新删除掉!

解决思路:在 Firenze 从备份还原 Active Directory 之后,我们可以利用一个工具NTDSUTIL.EXE来修改Active Directory对象的版本号,让Firenze的版本号大于Florence的版本号,这样我们就可以利用达到目的了。这种还原方式我们称为授权还原,下面我们通过一个实例为大家演示一下具体过程。

现在的场景是 Firenze 已经对 Active Directory 进行了备份,备份中包含了域用户张建国。在备份之后我们误删除了张建国,现在我们在 Firenze 上开始利用备份进行主要还原。首先在 Firenze 上重启计算机,BIOS 自检后按下 F8, 如下图所示,选择进入目录服务还原模式。目录服务还原模式可以把 Active Directory 挂起,适合我们从备份还原 Active Directory。

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

在以下界面中,勾选“授权还原”,

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

点击“恢复”,过程需要10-20分钟,请稍等...

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

如下图所示,还原结束后,千万别选择重启计算机,我们还没有修改Active Directory的版本号呢,保持以下界面,打开命令提示符窗口。

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

在命令提示符中,运行了 NTDSUTIL,再运行 Authoritative restore 来修改 AD 对象的版本号。

我们可以简单地运行 restore database,这样整个 AD 内所有对
象的版本号都将加到最大,版本号加到最大是什么含义呢?微软规定,AD 对象
的版本号每天最多可以增加10万。在本例中我们不需要把AD中所有对象的版本号都增加到最大,只要修改张建国的版本号就可以了。因此我们可以使用
Restore Object 命令只针对张建国的版本号进行修改,那如何在AD中表示张建国呢?按照目录对象的命名规范,张建国隶属于
ADTEST.COM
域中的人事部组织单位,那我们描述张建国就应该使用“cn=张建国,ou=人事部,dc=adtest,dc=com”。如下图所示,我们输入修改指令后观察一下运行的效果。

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

运行完命令后,系统询问是否执行授权还原,我们选择“是”。

如下图所示,授权还原成功完成,用 quit 命令退出 NTDSUTIL。windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

重启计算机,正常启动,以域管理员登录,提示如下,

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

打开Active Directory用户和计算机,如下图所示,Firenze的 AD 中已经重新拥有了用户张建国,修改版本号成功了。

windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

很多朋友会很自然地想到利用
Firenze 上的 Active Directory 备份来解决这个 问题,既然备份中有张建国,那么把备份还原回来不就 OK
了吗?这个问题没这 么简单,如果域中只有一个域控制器,那么用备份还原是成立的。但现在域中有 两个域控制器,我们就要好好考虑一下了。Firenze
从备份还原后,Florence

和 Firenze 的 Active
Directory 内容就不一样了,那么 Florence 和 Firenze 的 Active Directory
哪个优先级更高呢?哦,不对,似乎是 Florence 的版本 号更高一些!那我们就可以从理论上得出结论,Firenze 从备份还原之后,Acti
ve Directory 中已经拥有了张建国的用户账号,但 Firenze 和 Florence 比较 了
Active Directory 之后,Firenze 认为 Florence 的 Active Directory 比自 己的优先级高,因此
Firenze 会把 Florence 的 Active Directory 复制过来, 这样一来,刚被还原的张建国肯定会被重新删除掉!

难道我们对此就无能为力了吗?不是的,在 Firenze 从备份还原 Active Direc tory 之后,我们可以利用一个工具NTDSUTIL.EXE
来修改 Active Direct
ory 对象的版本号,
让Firenze的版本号大于Florence的版本号,这样我们就可以利用游戏规则顺利地达到目的了。这种还原方式我们称为授权还原,下面我们通过一个实例为大家演示一下具体过程。

现在的场景是
Firenze 已经对 Active Directory 进行了备份,备份中包含了域 用户张建国。在备份之后我们误删除了张建国,现在我们在
Firenze 上开始利 用备份进行主要还原。首先在 Firenze 上重启计算机,BIOS 自检后按下 F8,
如下图所示,选择进入目录服务还原模式。目录服务还原模式可以把 Active Di rectory 挂起,适合我们从备份还原
Active Directory。