小心双刃剑 Ntdsutil对活动目录的管理

系统 Windows
有传言说微软正计划去掉Ntdsutil.exe,该工具从Windows 2000开始就提供到各种活动目录功能的命令行访问。Ntdsutil已经成为我调试活动目录问题的常用工具,但是我却发现,尽管在Windows Server 2008和R2中Ntdsutil增加了许多功能来提高易用性,仍然只有很少一部分管理员使用它。

有传言说微软正计划去掉Ntdsutil.exe,该工具从Windows 2000开始就提供到各种活动目录功能的命令行访问。Ntdsutil已经成为我调试活动目录问题的常用工具,但是我却发现,尽管在Windows Server 2008和R2中Ntdsutil增加了许多功能来提高易用性,仍然只有很少一部分管理员使用它。

Ntdsutil功能很强大,但也很危险。问题就在于某些Ntdsutil命令要求活动目录处于脱机状态。在Windows 2000和2003中,通过重启域控制器和开启目录服务还原模式(Directory Services Restore Mode,DSRM)完成活动目录的脱机。这是唯一一种完成语义数据库检查(semantic database checker)等操作的方法。

然而,重启DC(两次)并不是我们希望的,但是在维护窗口时经常会要求有这样的操作。重启并进入DSRM(通常要求安全模式)会导致所有的服务都脱机,虽然我们不推荐这么做,但这种做法却相当普遍。

幸运的是,Windows Server 2008中引入了一个很不错的新选项,可以将活动目录服务安装为可以脱机使用的服务(见图1)。当活动目录域名服务(Active Directory Domain Services,AD DS)关闭后,Ntdsutil就可以在不重启的情况下进行语义数据库分析。

Windows Server 2008,Ntdsutil,命令

图1:活动目录域名服务

Ntdsutil命令介绍

那么让我们来看看Windows Server 2008和R2版的Ntdsutil,学习一些强大的操作,说不定某天就能让你少打一个技术支持电话:

  • 元数据清理:允许删除服务器、站点、域以及命名上下文对象(当你必须手动降级DC或有一些损坏对象时这特别有用。)
  • 文件*:管理活动目录数据库文件(这个不常用,但是还是有一些很有用的命令)
  • 组成员评估:显示主要的安全信息
  • 角色:管理FSMO角色
  • IFM(从介质安装)*:捕获活动目录的快照,然后在dcpromo的介质安装过程中使用
  • 语义数据库分析*:查找并修复数据库错误
  • 快照:管理快照,包括列举、安装和卸载快照
  • 授权还原:将域控制器还原到某个特定时间点

这些操作要求在活动目录域名服务停止的情况下进行。

注:虽然在过去,活动目录轻型目录服务( Active Directory Lightweight Directory Services,AD LDS)使用dsdbutil和dsmgmt这两个工具来管理AD LDS实例,但微软实际上已将这些工具整合到Ntdsutil中了。我不会在这里讨论AD LDS的详细功能,但我们必须意识到现在所有的管理功能都在AD LDS中了,这点很重要。

有几个技巧可以帮助管理员迅速熟悉Ntdsutil工具。初学者应知道,命令可以用缩写,这意味着你只要输入足够的字母就可以唯一定义Ntdsutil命令。例如,要使用元数据清除命令,你只需键入“meta cl”。另外,管理员还可以使用方向键调出曾用的命令。

Ntdsutil还包括了一个退出选项,在任何菜单级别选择该选项,都会进入上一级菜单。^C则表示退出整个Ntdsutil。连接选项会在很多Ntdsutil命令中出现,如元数据清除,如图2所示。它定义了一个到某一特定域控制器的链接。当这个命令出现时,你只需进入连接菜单然后输入:

 Connections: Con To Ser <域控制器名,如ATL-DC1>

操作会在该域控制器复制的活动目录生效。你可以使用已登录用户的密码,或者另外指定一个。

Windows Server 2008,Ntdsutil,命令

图2:Ntdsutil元数据清除命令

Ntdsutil也有一个在线帮助组件,如图3所示。多年来我曾多次使用这个工具,我还总是在任一菜单级别中键入?来快速显示可用的选项。

对于在线帮助,有几个变化需要注意。例如,授权还原操作现在需要一个实例的定义。这与Ntdsutil管理AD LDS分区的方式有关。如果你得到错误提示,要求你指定一个实例,那么你可以使用如下的命令:

 Ntdsutil:Activate Partition ntds(或选择合适的AD LDS实例进行管理)。

Windows Server 2008,Ntdsutil,命令

图3:Ntdsutil帮助组件#p#

Ntdsutil:文件

Files命令要求停止活动目录域服务器。 以下几个命令较为常用:

  • Checksum --检查引擎数据库的物理完整性。当数据库报错,尤其是在事件日志中,你可以使用该命令,也可以使用主菜单上的语义数据检测器。
  • Integrity--该命令非常类似于Checksum,但是运行不同的检查。
  • Set default folder security--该命令用于重设NTDS文件夹上的安全设置。这个命令不常用,除非你不小心误操作了NTDS文件夹,不得不重新恢复。
  • Move logs to %S and Move DB to %S--该命令用于移动数据库和日志文件。

虽然我们不会每天都用到这些命令,但是如过你看到在事件日志中出现了数据库错误时,Integrity 和Checksum命令就能马上派上用场。你也可以使用语义数据库检测去检测数据库的一致性。

Ntdsutil:语义数据库分析

这是个功能强大的命令,而且非常容易使用。 在任何时候,只要在事件日志中看到数据库错误,我都会使用它。老实说,这个是我唯一使用的命令。

Semantic Checker: Go Fixup

此命令可以快速地进行完整性检查,根据我的经验,该命令每次都可以成功修复数据库。当然,不能保证它能修复所有数据库问题,但是它肯定不会带来任何新问题。此命令可以和上面提及的Ntdsutil:Files中的数据库修复命令一起使用。

Ntdsutil:组成员评估

这个选项为用户或组在安全令牌中存储安全标识符(SID)。虽然有一些老的资源工具包中的工具也能执行该操作,但是能把该工具整合到Ntdsutil确实非常棒。使用该命令前,需要先使用Set Global Catalog 或 Set Resource DC 命令去定义GC/DC。

Run Corp.com olseng

该命令会是一个五个步骤的操作过程,结果保存到C:\ olseng-20110217024622.tsv(包括所有安全信息的文本文件)。

正如你所看见的,Ntdsutil非常强大。因篇幅所限,还有很多有用的命令选项不能一一介绍。请记住对于安全、账户管理、分区管理、LDAP策略和其它AD LDS分区选项,Ntdsutil都是一个非常方便的命令,当然,有时候也很危险。通常,Ntdsutil会提供警示信息来让你自我保护。 记住一点,无论做什么,在点击回车时,一定要清楚知道自己正在做什么。

现在我们就来看看Windows Server 2008中Ntdsutil命令的详细功能,来进一步认识它的强大功能。

Ntdsutil:元数据清理

该命令是所有Ntdsutil命令中最常用的一个,至少我这样认为。早在Windows 2000中就有了该命令,它主要是在手动执行了域控制器提升操作(dcpromo)后用于清除活动目录对象。Ntdsutil元数据清除命令需要使用连接菜单连接活动目录控制器。

元数据清理要求明确指出相关站点、域、命名上下文和服务器来定位需要删除的对象。该操作是通过元数据清除菜单中的选择操作对象(SelOT)命令来实现的。例如,如果我想从SelOT目录中删除ALT-DC4这个对象,我首先可以输入“?”命令符来了解该命令的语法参数,如图4所示。

Ntdsutil,命令行,工具,活动目录

图 4:使用SelOT命令

为了指定站点、域和服务器,你必须列出所有站点来得到一个相关编号,该编号会在选择命令时使用。以下就是如何操作:

  • 使用 List sites 命令:
select operation target: list sites

发现 6个 site(s)

0 - CN=Alpharetta,CN=Sites,CN=Configuration,DC=Wtec, DC=adapps,DC=hp,DC=com

1 - CN=Brussels,CN=Sites,CN=Configuration,DC=Wtec,

DC=adapps,DC=hp,DC=com

2 - CN=Melbourne,CN=Sites,CN=Configuration,DC=Wtec,

DC=adapps,DC=hp,DC=com

3 - CN=Bracknell,CN=Sites,CN=Configuration,DC=Wtec,

DC=adapps,DC=hp,DC=com

4 - CN=Roseville,CN=Sites,CN=Configuration,DC=Wtec,

DC=adapps,DC=hp,DC=com

5 - CN=Site1,CN=Sites,CN=Configuration,DC=Wtec,

DC=adapps,DC=hp,DC=com

  • 现在可以使用Select site命令。我们想处理的服务器是site 1 – Brussels:: select operation target: sel site 1(注意 “1”是Brussels在LIST sites命令中的相关编号。)输出如下:

Site -CN=Brussels,CN=Sites,CN=Configuration,DC=Wtec,DC=adapps,DC=hp,DC=com

No current domain

No current server

No current Naming Context

  • 为域名和服务器重复该过程。每次使用list命令(如List domains),获取你想处理对象的相关编号,然后在使用Select domain (#) 命令。一旦完成了这些操作,您就能看到类似图5中的结果。虽然读起来有点费劲,但是至少指定了站点、域和服务器。

Ntdsutil,命令行,工具,活动目录

图5: SelOT命令的输出例子

  • 要删除一个已指定的服务器对象,请使用Quit回到Ntdsutil元数据菜单,然后使用remove命令:

Remove selected server

你会看到一个弹出窗口通知服务器将被删除,如图6所示。当你在处理活动目录中的对象时,请一定要小心使用这个命令。

Ntdsutil,命令行,工具,活动目录

图 6:服务器删除确定对话框 #p#

Ntdsutil:角色

这是查看、夺取并转移灵活单主机操作(Flexible Single Master Operations ,FSMO)角色的最快办法。在使用该命令时,有几点要注意:

  • 在FSMO维护(Role)菜单中,进入Connection菜单连接到域控制器,该域控制器是你想转移角色的目的地。这非常重要。

    Connections: Connect to server Wtec-dc1

  • 退回到FSMO维护菜单(如图7所示)

Ntdsutil,工具,活动目录,管理

Figure 7:FSMO维护菜单

  • 图7显示命令选项和详细的解释。
  • 想使用Ntdsutil命令查看所有角色,进入选择操作目标菜单,然后输入所选服务器的角色列表(如图7)。虽然输出不好看,但是涵盖了所有你想要的内容。使用Netdom命令可以获取更详细的信息。

    Netdom Query Fsmo

  • 你可以使用如下命令,夺取PDC角色Fsmo Maintenance: Seize PDC

     

请注意,任何夺取操作都会先自动尝试转换。Ntdsutil的优点就是可以一次性管理所有FSMO角色。

Ntdsutil:IFM

从介质安装是Windows 2008上的新功能,能通过域控制器提升操作(dcpromo) 安装向导使用高级安装选项建立一个新的域控制器,比windows 2003要快得多。在执行这个选项前,会要求对DC做一次备份,此后恢复文件会复制到服务器的本地介质中。域控制器提升操作(dcpromo) /ADV发出指令称要对首次升级使用静态恢复文件而不是通过网络。图8显示IFM菜单选项和一个创建完整实例的例子。包括如下操作:

  • 创建完整的SYSVOL活动目录实例和非SYSVOL完整实例
  • 创建SYSVOL和非SYSVOL只读域控制器 (RODC)实例

Ntdsutil,工具,活动目录,管理

图 8: Ntdsutil IFM快照

IFM创建一个快照,首先会进行数据库碎片整理,然后保存快照到你指定的硬盘文件夹中。

Create sysvol full c:\adbackup

在C:\adbackup中将会有三个目录,分别是:Active Directory、Registry和SYSVOL,这里面的所有文件都会在执行dcpromo操作时用到。

使用IFM命令,能很容易地从现有域控制器上获得安装所需的活动目录资源,就好像是向待提升的服务器,进行一个简单的复制操作。IFM使得升级服务器来作为域控制器变得异常简单。一旦域控制器提升操作(dcpromo)结束,复制将立即进行以保证及时更新。请注意,一个只读域控制器(read-only domain controller, RODC)实例会在读/写域控制器中创建,但是只有只读域控制器实例自己能创建一个只读域控制器实例。

正如你所看见的,Ntdsutil非常强大。因篇幅所限,还有很多有用的命令选项不能一一介绍。请记住对于安全、账户管理、分区管理、LDAP策略和其它AD LDS分区选项,Ntdsutil都是一个非常方便的命令,当然,有时候也很危险。通常,Ntdsutil会提供警示信息来让你自我保护。 记住一点,无论做什么,在点击回车时,一定要清楚知道自己正在做什么。

【编辑推荐】

  1. 如何使用Ntdsutil修复Active Directory数据库
  2. 用NTDSUTIL清理活动目录对象使用技术示例
责任编辑:张浩 来源: TT中国
相关推荐

2019-03-21 14:12:27

数据管理物联网物联网安全

2019-12-18 15:30:57

漏洞安全Linux

2012-03-05 16:37:55

2012-12-25 12:42:46

应用审查App Store

2017-08-14 14:51:15

2010-09-02 14:52:20

CSS框架

2015-05-27 16:35:59

2009-03-05 10:50:00

空中上网

2021-04-29 07:43:51

JavaUnsafe 基础native方法

2014-02-11 08:57:50

云计算IT架构IT运营

2023-01-30 17:26:27

Kubernetes成本双刃剑

2011-11-08 08:14:40

WLANWi-Fi

2014-05-06 09:17:59

云服务云欺诈云犯罪

2020-11-23 08:30:42

AI

2017-07-20 08:55:47

2019-07-08 15:38:22

大数据系统存储

2022-03-18 13:50:06

区块链加密货币去中心化

2013-08-13 09:07:20

大数据

2012-06-19 10:16:04

2012-08-22 13:10:57

Win 8Liunx操作系统
点赞
收藏

51CTO技术栈公众号