還原已刪除的Active Directory對象之不完全攻略篇(下)

前言:有朋友看了中篇老馮的故事以後給老馮發來反響,"爲啥你不用AD的備份做授權還原呀?組關係啊啥的屬性都在!何苦還要手動再操作?!".這個老馮也是有一定苦衷的.相信大家也清楚要做AD的授權還原,被操作的域控制器必須保持離線狀態(進入目錄服務還原模式)且操作期間不能對外提供正常服務.這個重啓服務器而且有中斷服務時間是要先跟主管申請,說明情況的(不要想拿打了更新補丁糊弄主管,這邊都是有嚴格的指定時間的),要是直接跟他說是因爲不小心誤刪除了上面幾個帳號啥的,一頓批評那是少不了的,更何況老馮還得爲坐在監控室的那幾個小妹還有新來的工程師多想想嘛.出來混大家都不容易...另外還有一個僞科學的因素:搞服務器管理的基本上都有一點不願意有事沒事重啓服務器的心結.這點在老馮的單位被印證過多次,XX牌服務器於某次重啓後就再沒啓起來(不知道是不是也屬於最近被熱炒的"問題服務器門"中的一批次),只得找廠商來修,又耽誤N久時間.
所以綜上所述,老馮主力介紹的都是不用域控還要離線還要重啓的一些方法,請各位多多包涵.4 ?" S& j; N+ A* h
6 ^! g) q, j- x! x5 m: c& P. Y" ~

  在工程師們三天兩頭的唸叨和鋪天蓋地的微軟廣告效應下,老馮的單位終於願意將一些服務器平臺升級到Windows Server 2008 啦,還有小部分可以申請升級到R2.不過老闆有言在先,如果想要全部都換成Windows Server 2008或者R2,還得工程師們拿出強有力的證據(數據)給他看,到底它們比2003優秀在了哪裏?
這可樂壞了公司的"域用總管"---老馮.早就聽說Windows Server 2008 R2上對Active Directory這塊添加了很多新功能新特性,這下總算有機會部署在生產環境中了.(不會被同行們嘲笑"Out"了...T_T)
跟主管打好報告,申請到了兩套Windows Server 2008 R2 Enterprise,老馮就茶不思飯不想地按照Technet資料庫裏的各種指南和白皮書一頭扎進域控制器升級計劃.: R% X/ C$ c; R% [$ h: W$ X
......
經過幾日廢寢忘食地折騰,看着兩臺跑着Windows Server 2008 R2的域控制器的正式出山,老馮心裏那叫一個美,那叫一個爽.9 d0 r% J) f9 q1 H! p/ Q" _/ Z; j
  美歸美,爽歸爽,工作還是要繼續.& N4 z- U: ]- O8 M/ c1 Z4 F1 g
  "既然咱管的是AD DS,那就先在這上面做做文章吧!"老馮心裏盤算着.8 x7 w9 s1 v/ j& P8 \$ a
  "嗯,先不用去管什麼RODC也不去理什麼Fine-Grained Password Policies ,暫時都還沒有這個需求,先把Active Directory Recycle Bin功能開起來再說."老馮打定了主意,自言自語道.(哈,老馮沒上手R2之前可就做了不少功課哦.). P! P  L$ G; Y. I/ o7 u
  "什麼是Active Directory Recycle Bin啊,哥?"旁邊的小周聽到了老馮的話,問到.
"活動目錄回收站,比上回叫你用的那個adrestore還好使!"老馮邊連接域控邊回答到.
"哦?是嗎?這麼強大呀,哥你給我講講這個唄..."小周很有興致地湊了過來.
老馮本着帶徒弟就要帶好的敬業精神,停下了手裏的動作,"好吧,我先給你畫個圖."2 C5 ?8 g/ B9 U& E  a
  "在咱們以前用的Windows Server 2003還有Windows Server 2008的域控上,如果我們刪除了一個活動目錄對象,它有這樣一個流程"老馮開始畫着,
  L/ T1 b- W( U! n/ U2 K! d" T
"你看,比如上回被你誤刪的那些個賬號,都會由活動狀態轉換爲已邏輯刪除狀態,但是在墓碑生存期內它們還不會被徹底地物理刪除,而是拋到'Deleted object'那個容器裏了."; a7 B! U, M8 M; i
  "嗯,你上次跟我講過,我記得,2003打了SP2補丁默認是180天嘛,只要沒過180天都能從那裏面再用工具救回來."9 U8 K+ u. w9 ~. {5 |
  "嗯,很好,但是你也看到了他的缺點,救回來的用戶帳號的很多屬性,像組成員關係呀還有姓名之類的都已經被清除了."
"是啊,那次我手動一個一個加回去搞的好累呀."! _3 m; R! u9 d- `& U/ K! }
  "額,那還不是怪你那快手...你還好意思喊累...",老馮心裏這麼想,嘴上接着說,"所以微軟考慮到這一點,在Windows Server 2008 R2系統的活動目錄新特性部分增加了這個AD回收站功能.我再給你畫個圖."1 X7 x. c) p; i5 b! p( s4 d& f6 b& M* t
 
"看到沒有,現在的流程有些變化,在開啓了AD回收站功能以後,被刪除的對象會先進入'邏輯刪除'狀態,成爲邏輯刪除對象.處於這個狀態的時候系統將會保留它所有的鏈接值屬性和未鏈接值屬性,而這個保留時間就是圖上面的'已刪除對象生存期',在這個生存期如果你沒有還原它,那麼它纔會變成回收對象,被拿掉大多數屬性,就和2003裏面基本一樣了.再等到'已回收對象生存期',也就是墓碑時間,過完之後纔會被物理刪除掉.這整個過程中,不管是'已刪除對象'還是'已回收對象'都還是被放置在'Deleted object'這個容器裏面的.明白了嗎?"
"額額,有點繞,是不是簡單一點可以這樣理解,開啓了AD回收站就是比2003系統上多了一箇中間狀態,給了管理者更多的時間讓我們能全方位地恢復刪除對象."+ W! J: ~6 L8 g
  "理解的不錯呀,小周",老馮讚許道., }  ^9 ^" u+ {0 W- f* t( J
  "那這個已刪除對象的生存週期是多久啊?".
"看來你是認認真真聽了,呵呵",老馮打心眼裏喜歡上了這個小朋友,"這樣的,這個已刪除對象的生存週期是由域架構裏一個叫做'msDS-deletedObjectLifetime'的屬性控制的,而已回收對象的生存週期還是由'tombstoneLifetime'墓碑生存時間控制着.默認情況下這個'msDS-deletedObjectLifetime'的值是null, 表示它的值跟從'tombstoneLifetime'的值. 而'tombstoneLifetime'的值依然和Server 2003上一樣,還都是180天.當然了,這兩個值是可以根據你的需求修改的."
"哦哦,明白了!那我們趕緊動手吧!"小周已經遠程連接到域控上迫不及待了.
"呵呵,別急別急,要開啓AD回收站還是稍微有點麻煩的."
"嗯?..."
"首先,我們要保證AD林中所有的域控制器都是Windows Server 2008 R2並且將林功能級別也提升到了Windows Server 2008 R2.我現在check一下."- x/ h+ G. q2 J% d4 N

"好的,林功能級別已經是Windows Server 2008 R2了,我們可以進行下一步了,在powershell裏添加AD管理模塊."
"還要用powershell呀?"小周對powershell也是久仰其名了.3 g& A2 Q% D: t2 I/ C$ V& T1 Z
  "不是一定要用powershell來開啓AD回收站,也可以用ldp.exe工具,不過用ldp工具操作起來比較麻煩,沒有用命令行來的乾脆快捷,微軟也是推薦使用powershell來操作的."
: "這樣啊,那哥你開始操作吧,我在旁邊看你操作,有問題就問你的喲."" T. B  F  X2 V/ K
  "恩,好的."2 |- T  H! u6 K( [
  說完,老馮打開域控上的powershell,只在裏面輸入了短短的一行命令:import-module activedirectory." h( B& Q. u$ ~" t: U' K6 M
, U0 U: L4 s( I4 w( x5 A
  回車以後就可以將AD模塊加載到powershell中了.加載成功後可以在"所有程序"--->"管理工具"中看到新生成了一個"用於Windows PowerShell的Active Directory模塊",雙擊開啓它.啓動之後,需要輸入啓用AD回收站的命令,格式爲:9 U/ u7 B6 F3 ^3 \0 r6 L1 Q* I# R
Enable-ADOptionalFeature -Identity <ADOptionalFeature> -Scope <ADOptionalFeatureScope> -Target <ADEntity>4 A9 T( `: M5 |) p* \0 ?

老馮套用到自己的實際情況,敲入命令: Enable-ADOptionalFeature –Identity ‘CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration, DC=northwind,DC=com’ –Scope ForestOrConfigurationSet –Target ‘northwind.com’
' R' Z8 a, F; U, v
  回車後系統會提示說開啓回收站特性是一個不可逆的操作,開啓了之後就無法再關閉掉.' q# t4 N$ G8 w6 N
  輸入Y確定之後回車,AD回收站就已經正式在Windows Server 2008 R2域控上被啓用了.0 u, ~& |; z9 p8 ]
  "我們來做個測試吧,這回玩點狠的,連OU都一起給他刪掉."老馮想看看AD回收站和powershell能到底帶來多大驚喜.5 J) O: E% F' O
  於是,老馮在域控上新建立了一個OU"ship"(建立時勾選掉了"防止容器被意外刪除"),裏面又建立了兩個用戶,Jack和Rose,他倆都屬於OU裏一個叫"Titanic"的組,建好後等了幾秒,老馮在OU"ship"上直接點擊了刪除.$ @$ \3 a8 l% U/ P+ g) C6 j

& f; d! V& O, U2 |' I2 O9 p
  老馮又切換到powershell窗口,先使用Get-ADOBject cmdlet來查詢被刪除的Jack.+ x9 O7 D, S1 y3 ~* Y
2 P' f3 U+ f( C& _, R
  看到Jack已經被放入Deleted Objects容器中了.接着使用restore-adobject 命令來試圖還原他.
/ j9 p! L  m: s9 p; C4 S$ G
  看到英文提示:這個操作無法被執行,因爲此對象的parent也被刪除了.. L6 Q$ W* y+ x  \
  所以要還原Jack,必須先還原他以前所在的OU.3 V6 G# G- K" x; b; Y
  所以老馮使用命令Get-ADObject -ldapFilter:"(msDS-LastKnownRDN=ship)" –IncludeDeletedObjects | Restore-ADObject來先將ship這個OU還原回來.
! o& M8 h4 R( q4 F
  到ADUC中看看,

ship這個OU已經被還原回來了.8 x0 D# o! N# L3 v4 R$ w
  隨後老馮執行命令: Get-ADObject -SearchBase "CN=Deleted Objects,DC=northwind,DC=com" -Filter {lastKnownParent -eq "OU=ship,DC=northwind,DC=com"} -IncludeDeletedObjects | Restore-ADObject' m- u$ L# n1 e9 V1 m
) b0 e! q8 o( ?
  這條命令下去可是太強悍了,它的用意是將所有在ship這個OU下的被刪除對象都還原回來.到ADUC上一看,% V; V& g( p1 t

連用戶帶組都被還原回來了.並且和Server 2003上最大的不同是,帳戶沒有被停用,鏈接值屬性也還在...(還記得前面講的"已刪除對象生存期"的概念嗎?呵呵~): u+ {; u/ |' e. Z6 ?& n3 D
5 Q1 l& B/ F* }+ L( k# ?; u5 z4 k
  有一點,老馮需要提醒大家,在生產環境中使用上面這種細粒度比較大的命令來還原一整個被誤刪除的OU和它裏面全部的用戶對象之後,很容易將一些非誤刪除的對象(比如正常作業kill掉的離職員工的帳號)也連帶還原回來,這個時候還需要將它們再刪除一遍.這種情況對於手頭沒有完備的離職員工信息統計或者是近一段時間頻繁進行了刪除帳號作業的域管理者,肯定是一種比較糟糕的體驗.(但總比一個一個去還原OU裏面的賬戶來的方便吧?見仁見智的選擇了.)所以Windows Server 2008 R2對於OU的保護特別到位和貼心,在你新建一個OU時默認就會勾選着保護它不被意外刪除的選項.; C$ N7 I, _4 d0 c9 x. i( a: E; W
6 }0 h" f  j$ g: e5 q
, R2 Z2 Z6 _/ v. V! f; {6 `) k
  "小周,怎麼樣?用了AD回收站和powershell有什麼感想?". }- [7 J. Q1 w9 b/ ^+ v$ C' o0 s8 M$ g
  "我要買本書開始學powershell了!"% r# w/ y$ m0 w1 |: b. k6 ?: n% R
  孺子可教......
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章