活动目录系列其实已经结束,但最近我在一次偶然的实验环境下,发现SYSVOL和NETLOGON两个共享文件夹突然丢失,想到这是在做了某些误操作所致,于是在这里把该系列再补上一篇,算是收尾吧。

   描述一下事情发生的全过程:
我搭建了一个双站点的父子域环境,其中北京站点是有一台根DC,n1.net.com,上海站点有第二台根DC,n2.net.com,同时还有一个子域DC,n3.net.com。如下图所示:
   我在做完站点的相关实验后,故意将上海站点的两台DC全部离线,然后把北京站点DC的一个用户jack和一个OU名为HR(里面有几个用户)删除,当然之前已经把AD做了备份,而且备份中包含用户jack,我用了命令repadmin  /showmeta  cn=jack,ou=sails,dc=net,dc=com >c:\jack.txt和repadmin  /showmeta  ou=HR,dc=net,dc=com >c:\HR.txt,把jack用户相关属性的版本信息及OU的相应版本信息保存来了,然后我把DC重启,按F8进入目录还原模式,要验证“授权还原”对用户及OU的版本的变化情况。
   进行“目录恢复模式”后,先进行正常还原,再进行授权还原,然后重启DC,成功登录后(发现有些慢,并没在意),然后我进入CMD,先把DC上有关上海站点的信息删除,输入ntdsutil,大致如下操作:
ntdsutil:
:meta clea
:conn
:con to server n1.net.com
:quit
:sele oper target
:....后面省略,各位可以参见我以前的活动目录系列有此命令的详细说明。
清理干净后,退到C盘根目录,我输入:
c:\> repadmin  /showmeta  cn=jack,ou=sails,dc=net,dc=com >c:\jack1.txt
c:\> repadmin  /showmeta  ou=HR,dc=net,dc=com >c:\HR1.txt
c:\>repadmin  /showmeta  cn=alice,ou=HR,dc=net,dc=com>c:\alice.txt
经过验证用户jack属性的版本值全部增加100000次,如下图是前后的比较:
而对于OU也是增加了十万次,OU里的所有用户也都恢复了,ver值也增加了十万次。不再图示,实验验证完毕。
   打开dsa.msc想看一下用户是否恢复,发现联系不上域,手动联系,成功,于时重启DC,再次登录,这次这台DC应该是独立干净的DC,想必应该登录较快,而且不会有问题。但情况并不见好转,登录比较慢,登录成功后,运行dsa.msc,还是联系不上域,只能手动联系。打开eventvwr.msc查看日志发现可能SYSVOL共享文件夹丢失,于是查看本机,确实SYSVOL和NETLOGON全部丢失,怪不得,必须进行修复。
   用过AD的朋友都知道,我们在安装AD时有一个文件夹就是SYSVOL,而这个文件夹必须共享,这里面放的就是组策略模板,即组策略的具体设置,如果这个文件夹没有共享或丢失,那我们的域就不健康了,换句话说,组策略就加载不了了,在这种情况下,客户端登录域会很慢甚至登录不了。而DC当然也是一样的。
   NETLOGON里面放的是脚本,这个文件夹也必须共享。没有办法,我们只能进行修复。
为什么会丢失?怀疑是进行授权还原造成的,或进行ntdsutil修复DC造成,总之我是进行这两项操作所为,查看文件夹还存在,万幸,手动共享重启,发现不成功,只能通过修改注册表实现,如下所示操作步骤:
一、打开DC的注册表编辑器(regedit),修改键值如下
修改后,关闭注册表。
二、重启相关服务:如下图
三、查看共享,发现已经成功
四、重启DC。
查看事件查看器,正常。
再利用dcdiag /a /v 来查看有无大的错误,无碍,问题解决。
当然如果你的SYSVOL文件夹被人为删除,这个修复工作是比较麻烦的,各位如果要实践可以参见 Bnsen的 《解决灾难恢复后域共享目录SYSVOL与NELOGON共享丢失》。
后记:其实今天我写这篇文档,也是想写一下解决问题的思路,各位如果没有真实的生产环境,完全可以自己模拟环境,搞坏实验环境,然后再修复,直至域环境健康。