小心雙刃劍 Ntdsutil對(duì)活動(dòng)目錄的管理
有傳言說(shuō)微軟正計(jì)劃去掉Ntdsutil.exe,該工具從Windows 2000開(kāi)始就提供到各種活動(dòng)目錄功能的命令行訪問(wèn)。Ntdsutil已經(jīng)成為我調(diào)試活動(dòng)目錄問(wèn)題的常用工具,但是我卻發(fā)現(xiàn),盡管在Windows Server 2008和R2中Ntdsutil增加了許多功能來(lái)提高易用性,仍然只有很少一部分管理員使用它。
Ntdsutil功能很強(qiáng)大,但也很危險(xiǎn)。問(wèn)題就在于某些Ntdsutil命令要求活動(dòng)目錄處于脫機(jī)狀態(tài)。在Windows 2000和2003中,通過(guò)重啟域控制器和開(kāi)啟目錄服務(wù)還原模式(Directory Services Restore Mode,DSRM)完成活動(dòng)目錄的脫機(jī)。這是唯一一種完成語(yǔ)義數(shù)據(jù)庫(kù)檢查(semantic database checker)等操作的方法。
然而,重啟DC(兩次)并不是我們希望的,但是在維護(hù)窗口時(shí)經(jīng)常會(huì)要求有這樣的操作。重啟并進(jìn)入DSRM(通常要求安全模式)會(huì)導(dǎo)致所有的服務(wù)都脫機(jī),雖然我們不推薦這么做,但這種做法卻相當(dāng)普遍。
幸運(yùn)的是,Windows Server 2008中引入了一個(gè)很不錯(cuò)的新選項(xiàng),可以將活動(dòng)目錄服務(wù)安裝為可以脫機(jī)使用的服務(wù)(見(jiàn)圖1)。當(dāng)活動(dòng)目錄域名服務(wù)(Active Directory Domain Services,AD DS)關(guān)閉后,Ntdsutil就可以在不重啟的情況下進(jìn)行語(yǔ)義數(shù)據(jù)庫(kù)分析。
圖1:活動(dòng)目錄域名服務(wù)
Ntdsutil命令介紹
那么讓我們來(lái)看看Windows Server 2008和R2版的Ntdsutil,學(xué)習(xí)一些強(qiáng)大的操作,說(shuō)不定某天就能讓你少打一個(gè)技術(shù)支持電話:
- 元數(shù)據(jù)清理:允許刪除服務(wù)器、站點(diǎn)、域以及命名上下文對(duì)象(當(dāng)你必須手動(dòng)降級(jí)DC或有一些損壞對(duì)象時(shí)這特別有用。)
- 文件*:管理活動(dòng)目錄數(shù)據(jù)庫(kù)文件(這個(gè)不常用,但是還是有一些很有用的命令)
- 組成員評(píng)估:顯示主要的安全信息
- 角色:管理FSMO角色
- IFM(從介質(zhì)安裝)*:捕獲活動(dòng)目錄的快照,然后在dcpromo的介質(zhì)安裝過(guò)程中使用
- 語(yǔ)義數(shù)據(jù)庫(kù)分析*:查找并修復(fù)數(shù)據(jù)庫(kù)錯(cuò)誤
- 快照:管理快照,包括列舉、安裝和卸載快照
- 授權(quán)還原:將域控制器還原到某個(gè)特定時(shí)間點(diǎn)
這些操作要求在活動(dòng)目錄域名服務(wù)停止的情況下進(jìn)行。
注:雖然在過(guò)去,活動(dòng)目錄輕型目錄服務(wù)( Active Directory Lightweight Directory Services,AD LDS)使用dsdbutil和dsmgmt這兩個(gè)工具來(lái)管理AD LDS實(shí)例,但微軟實(shí)際上已將這些工具整合到Ntdsutil中了。我不會(huì)在這里討論AD LDS的詳細(xì)功能,但我們必須意識(shí)到現(xiàn)在所有的管理功能都在AD LDS中了,這點(diǎn)很重要。
有幾個(gè)技巧可以幫助管理員迅速熟悉Ntdsutil工具。初學(xué)者應(yīng)知道,命令可以用縮寫,這意味著你只要輸入足夠的字母就可以唯一定義Ntdsutil命令。例如,要使用元數(shù)據(jù)清除命令,你只需鍵入“meta cl”。另外,管理員還可以使用方向鍵調(diào)出曾用的命令。
Ntdsutil還包括了一個(gè)退出選項(xiàng),在任何菜單級(jí)別選擇該選項(xiàng),都會(huì)進(jìn)入上一級(jí)菜單。^C則表示退出整個(gè)Ntdsutil。連接選項(xiàng)會(huì)在很多Ntdsutil命令中出現(xiàn),如元數(shù)據(jù)清除,如圖2所示。它定義了一個(gè)到某一特定域控制器的鏈接。當(dāng)這個(gè)命令出現(xiàn)時(shí),你只需進(jìn)入連接菜單然后輸入:
Connections: Con To Ser <域控制器名,如ATL-DC1>
操作會(huì)在該域控制器復(fù)制的活動(dòng)目錄生效。你可以使用已登錄用戶的密碼,或者另外指定一個(gè)。
圖2:Ntdsutil元數(shù)據(jù)清除命令
Ntdsutil也有一個(gè)在線幫助組件,如圖3所示。多年來(lái)我曾多次使用這個(gè)工具,我還總是在任一菜單級(jí)別中鍵入?來(lái)快速顯示可用的選項(xiàng)。
對(duì)于在線幫助,有幾個(gè)變化需要注意。例如,授權(quán)還原操作現(xiàn)在需要一個(gè)實(shí)例的定義。這與Ntdsutil管理AD LDS分區(qū)的方式有關(guān)。如果你得到錯(cuò)誤提示,要求你指定一個(gè)實(shí)例,那么你可以使用如下的命令:
Ntdsutil:Activate Partition ntds(或選擇合適的AD LDS實(shí)例進(jìn)行管理)。
圖3:Ntdsutil幫助組件#p#
Ntdsutil:文件
Files命令要求停止活動(dòng)目錄域服務(wù)器。 以下幾個(gè)命令較為常用:
- Checksum --檢查引擎數(shù)據(jù)庫(kù)的物理完整性。當(dāng)數(shù)據(jù)庫(kù)報(bào)錯(cuò),尤其是在事件日志中,你可以使用該命令,也可以使用主菜單上的語(yǔ)義數(shù)據(jù)檢測(cè)器。
- Integrity--該命令非常類似于Checksum,但是運(yùn)行不同的檢查。
- Set default folder security--該命令用于重設(shè)NTDS文件夾上的安全設(shè)置。這個(gè)命令不常用,除非你不小心誤操作了NTDS文件夾,不得不重新恢復(fù)。
- Move logs to %S and Move DB to %S--該命令用于移動(dòng)數(shù)據(jù)庫(kù)和日志文件。
雖然我們不會(huì)每天都用到這些命令,但是如過(guò)你看到在事件日志中出現(xiàn)了數(shù)據(jù)庫(kù)錯(cuò)誤時(shí),Integrity 和Checksum命令就能馬上派上用場(chǎng)。你也可以使用語(yǔ)義數(shù)據(jù)庫(kù)檢測(cè)去檢測(cè)數(shù)據(jù)庫(kù)的一致性。
Ntdsutil:語(yǔ)義數(shù)據(jù)庫(kù)分析
這是個(gè)功能強(qiáng)大的命令,而且非常容易使用。 在任何時(shí)候,只要在事件日志中看到數(shù)據(jù)庫(kù)錯(cuò)誤,我都會(huì)使用它。老實(shí)說(shuō),這個(gè)是我唯一使用的命令。
Semantic Checker: Go Fixup
此命令可以快速地進(jìn)行完整性檢查,根據(jù)我的經(jīng)驗(yàn),該命令每次都可以成功修復(fù)數(shù)據(jù)庫(kù)。當(dāng)然,不能保證它能修復(fù)所有數(shù)據(jù)庫(kù)問(wèn)題,但是它肯定不會(huì)帶來(lái)任何新問(wèn)題。此命令可以和上面提及的Ntdsutil:Files中的數(shù)據(jù)庫(kù)修復(fù)命令一起使用。
Ntdsutil:組成員評(píng)估
這個(gè)選項(xiàng)為用戶或組在安全令牌中存儲(chǔ)安全標(biāo)識(shí)符(SID)。雖然有一些老的資源工具包中的工具也能執(zhí)行該操作,但是能把該工具整合到Ntdsutil確實(shí)非常棒。使用該命令前,需要先使用Set Global Catalog 或 Set Resource DC 命令去定義GC/DC。
Run Corp.com olseng
該命令會(huì)是一個(gè)五個(gè)步驟的操作過(guò)程,結(jié)果保存到C:\ olseng-20110217024622.tsv(包括所有安全信息的文本文件)。
正如你所看見(jiàn)的,Ntdsutil非常強(qiáng)大。因篇幅所限,還有很多有用的命令選項(xiàng)不能一一介紹。請(qǐng)記住對(duì)于安全、賬戶管理、分區(qū)管理、LDAP策略和其它AD LDS分區(qū)選項(xiàng),Ntdsutil都是一個(gè)非常方便的命令,當(dāng)然,有時(shí)候也很危險(xiǎn)。通常,Ntdsutil會(huì)提供警示信息來(lái)讓你自我保護(hù)。 記住一點(diǎn),無(wú)論做什么,在點(diǎn)擊回車時(shí),一定要清楚知道自己正在做什么。
現(xiàn)在我們就來(lái)看看Windows Server 2008中Ntdsutil命令的詳細(xì)功能,來(lái)進(jìn)一步認(rèn)識(shí)它的強(qiáng)大功能。
Ntdsutil:元數(shù)據(jù)清理
該命令是所有Ntdsutil命令中最常用的一個(gè),至少我這樣認(rèn)為。早在Windows 2000中就有了該命令,它主要是在手動(dòng)執(zhí)行了域控制器提升操作(dcpromo)后用于清除活動(dòng)目錄對(duì)象。Ntdsutil元數(shù)據(jù)清除命令需要使用連接菜單連接活動(dòng)目錄控制器。
元數(shù)據(jù)清理要求明確指出相關(guān)站點(diǎn)、域、命名上下文和服務(wù)器來(lái)定位需要?jiǎng)h除的對(duì)象。該操作是通過(guò)元數(shù)據(jù)清除菜單中的選擇操作對(duì)象(SelOT)命令來(lái)實(shí)現(xiàn)的。例如,如果我想從SelOT目錄中刪除ALT-DC4這個(gè)對(duì)象,我首先可以輸入“?”命令符來(lái)了解該命令的語(yǔ)法參數(shù),如圖4所示。
圖 4:使用SelOT命令
為了指定站點(diǎn)、域和服務(wù)器,你必須列出所有站點(diǎn)來(lái)得到一個(gè)相關(guān)編號(hào),該編號(hào)會(huì)在選擇命令時(shí)使用。以下就是如何操作:
- 使用 List sites 命令:
select operation target: list sites
發(fā)現(xiàn) 6個(gè) 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
- 現(xiàn)在可以使用Select site命令。我們想處理的服務(wù)器是site 1 – Brussels:: select operation target: sel site 1(注意 “1”是Brussels在LIST sites命令中的相關(guān)編號(hào)。)輸出如下:
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
- 為域名和服務(wù)器重復(fù)該過(guò)程。每次使用list命令(如List domains),獲取你想處理對(duì)象的相關(guān)編號(hào),然后在使用Select domain (#) 命令。一旦完成了這些操作,您就能看到類似圖5中的結(jié)果。雖然讀起來(lái)有點(diǎn)費(fèi)勁,但是至少指定了站點(diǎn)、域和服務(wù)器。
圖5: SelOT命令的輸出例子
- 要?jiǎng)h除一個(gè)已指定的服務(wù)器對(duì)象,請(qǐng)使用Quit回到Ntdsutil元數(shù)據(jù)菜單,然后使用remove命令:
Remove selected server
你會(huì)看到一個(gè)彈出窗口通知服務(wù)器將被刪除,如圖6所示。當(dāng)你在處理活動(dòng)目錄中的對(duì)象時(shí),請(qǐng)一定要小心使用這個(gè)命令。
圖 6:服務(wù)器刪除確定對(duì)話框 #p#
Ntdsutil:角色
這是查看、奪取并轉(zhuǎn)移靈活單主機(jī)操作(Flexible Single Master Operations ,F(xiàn)SMO)角色的最快辦法。在使用該命令時(shí),有幾點(diǎn)要注意:
- 在FSMO維護(hù)(Role)菜單中,進(jìn)入Connection菜單連接到域控制器,該域控制器是你想轉(zhuǎn)移角色的目的地。這非常重要。
Connections: Connect to server Wtec-dc1
- 退回到FSMO維護(hù)菜單(如圖7所示)
Figure 7:FSMO維護(hù)菜單
- 圖7顯示命令選項(xiàng)和詳細(xì)的解釋。
- 想使用Ntdsutil命令查看所有角色,進(jìn)入選擇操作目標(biāo)菜單,然后輸入所選服務(wù)器的角色列表(如圖7)。雖然輸出不好看,但是涵蓋了所有你想要的內(nèi)容。使用Netdom命令可以獲取更詳細(xì)的信息。
Netdom Query Fsmo
- 你可以使用如下命令,奪取PDC角色Fsmo Maintenance: Seize PDC
請(qǐng)注意,任何奪取操作都會(huì)先自動(dòng)嘗試轉(zhuǎn)換。Ntdsutil的優(yōu)點(diǎn)就是可以一次性管理所有FSMO角色。
Ntdsutil:IFM
從介質(zhì)安裝是Windows 2008上的新功能,能通過(guò)域控制器提升操作(dcpromo) 安裝向?qū)褂酶呒?jí)安裝選項(xiàng)建立一個(gè)新的域控制器,比windows 2003要快得多。在執(zhí)行這個(gè)選項(xiàng)前,會(huì)要求對(duì)DC做一次備份,此后恢復(fù)文件會(huì)復(fù)制到服務(wù)器的本地介質(zhì)中。域控制器提升操作(dcpromo) /ADV發(fā)出指令稱要對(duì)首次升級(jí)使用靜態(tài)恢復(fù)文件而不是通過(guò)網(wǎng)絡(luò)。圖8顯示IFM菜單選項(xiàng)和一個(gè)創(chuàng)建完整實(shí)例的例子。包括如下操作:
- 創(chuàng)建完整的SYSVOL活動(dòng)目錄實(shí)例和非SYSVOL完整實(shí)例
- 創(chuàng)建SYSVOL和非SYSVOL只讀域控制器 (RODC)實(shí)例
圖 8: Ntdsutil IFM快照
IFM創(chuàng)建一個(gè)快照,首先會(huì)進(jìn)行數(shù)據(jù)庫(kù)碎片整理,然后保存快照到你指定的硬盤文件夾中。
Create sysvol full c:\adbackup
在C:\adbackup中將會(huì)有三個(gè)目錄,分別是:Active Directory、Registry和SYSVOL,這里面的所有文件都會(huì)在執(zhí)行dcpromo操作時(shí)用到。
使用IFM命令,能很容易地從現(xiàn)有域控制器上獲得安裝所需的活動(dòng)目錄資源,就好像是向待提升的服務(wù)器,進(jìn)行一個(gè)簡(jiǎn)單的復(fù)制操作。IFM使得升級(jí)服務(wù)器來(lái)作為域控制器變得異常簡(jiǎn)單。一旦域控制器提升操作(dcpromo)結(jié)束,復(fù)制將立即進(jìn)行以保證及時(shí)更新。請(qǐng)注意,一個(gè)只讀域控制器(read-only domain controller, RODC)實(shí)例會(huì)在讀/寫域控制器中創(chuàng)建,但是只有只讀域控制器實(shí)例自己能創(chuàng)建一個(gè)只讀域控制器實(shí)例。
正如你所看見(jiàn)的,Ntdsutil非常強(qiáng)大。因篇幅所限,還有很多有用的命令選項(xiàng)不能一一介紹。請(qǐng)記住對(duì)于安全、賬戶管理、分區(qū)管理、LDAP策略和其它AD LDS分區(qū)選項(xiàng),Ntdsutil都是一個(gè)非常方便的命令,當(dāng)然,有時(shí)候也很危險(xiǎn)。通常,Ntdsutil會(huì)提供警示信息來(lái)讓你自我保護(hù)。 記住一點(diǎn),無(wú)論做什么,在點(diǎn)擊回車時(shí),一定要清楚知道自己正在做什么。
【編輯推薦】