今天誤刪了公司的幾個賬號,在網上找到了下面的恢復方法,做個記錄吧!
在Windows文件系統下如果直接刪除文件,只是爲文件打上“已刪除”的標記,數據並未立即從硬盤上刪除,我們稱之爲“邏輯刪除”,同樣的道理,在AD中,直接刪除AD對象其實也是邏輯刪除,在Windows 2008中這個對象保留的時間還相當長,默認爲180天,這個時間術語也稱爲“墓碑時間”,正因爲如此,所以我們可以手動恢復被誤刪的AD對象。
假如原先AD中有個用戶對象user33,屬性如圖:
爲了陪襯,我還建了一個OU1和其中的user4帳號,然後我們將user33和ou1都刪除掉,模擬誤刪除。注意ou1爲了能直接刪除,在創建時不要勾選“防止誤刪除”那一項。
手動恢復步驟如下:
運行ldp工具,如果沒有這個工具,請安裝ADLDS角色,選擇[連接]菜單,設置連接到node1:389實例,即當前ADDS服務
然後綁定當前帳號權限(要用[email protected]登錄)
基本DN填入邏輯刪除時將對象臨時存放的容器cn=deleted objects,dc=ad01,dc=com(如果不知道LDAP表示法,就不要玩了)搜索所有被邏輯刪除的對象篩選器爲objectclass=*,如果只搜索用戶對象,則爲objectclass=user,然後單擊[選項]
結果搜索出來了,顯示所有被邏輯刪除的對象,它們的共同特徵是對象DN名被增加了\0ADEL這樣的字符,然後我們選擇要恢復的對象DN,點擊MOUSE右鍵選擇複製
粘貼剛纔拷過來的DN名,然後按下面順序執行操作,下面的操作是刪除這個邏輯刪除對象的isDeleted屬性值,即把它改成未被刪除的狀態
然後重命名這個邏輯刪除對象DN名,建議跟以前的DN名一致,最後點擊運行,就執行了這2個操作
不過,細心的你一定會發現,雖然對象恢復成功了,但很多屬性值都不見了,比如原來的顯示名稱和電話號碼屬性都不見,這是怎麼回事呢?
原來,AD在做邏輯刪除的時候還是會把對象的大多數屬性清空的,只保留了對象的一些關鍵屬性,如SID值,這是設計使然,不過我們也不是沒有辦法,我們可以提前設置在清空時要保留的屬性值,這樣在恢復時就可以還原
爲了測試,我們重新設置一下user33的屬性值,待會我們將打算刪除時保留“顯示名稱”和“電話號碼”兩個屬性,作爲參照,我們不會保留“辦公室”這個屬性。
這個保留屬性值的設置跟AD架構有關,在AD架構中大多數屬性名中有一個叫做searchFlags的屬性值,如果在原有值的基礎上加上0x8,就可以在刪除時保留這個屬性名對應的屬性。我們啓動ADSIEDIT工具(在系統的“開始/管理工具”菜單中)進入到AD架構中進行相應的修改(注意,ADSIEDIT的修改可能導致AD損壞等嚴重的後果,除非你清醒的知道你在做什麼,請不要在生產環境中像使用regedit那樣隨意使用它)
在AD架構中找到CN=Display-Name屬性名(對應中文名就是用戶帳號的“顯示名稱”屬性),然後在現有0x5值的基礎上加上8(十進制8跟十六進制8是相同的),在此輸入13(8+5=13),是十進制的
然後再找到要保留的CN=Telephone-Number屬性名,它對應的中文名即“電話號碼”,作類似的修改
修改完成後屬性值都會顯示PERSERVE_ON_DELETE,表明爲刪除時預留的屬性項
最後我們刪除user33對象,並按照前述手動恢復步驟的方面恢復user33,現在,我們看到“顯示名稱”、“電話號碼”都恢復過來了,但是由於“辦公室”對應的屬性我們並未設置,所以它沒有恢復出來。
但是,可惜的是OU1中的用戶帳號user4並不會跟着一塊恢復
以下,是常用屬性名的中英文對照,可以按照自己的需要預先作爲保留設置:
-----------------------------
屬性中文名,屬性英文名,屬性值示例
-----------------------------------
名字,givenName,張三
姓氏,sn,zhangsan
顯示名稱:displayName,張三
地址:streetAddress,花園街6號
市/縣:l,福州
省/市/自治區,st,福建
郵政編碼:postalCode,350001
國家/地區:co,中國
電子郵件:mail,[email protected]
職務,title,軟件工程師
單位,company,未來科技
部門,department,開發一部
辦公室,physicalDeliveryOfficeNa
電話號碼:telephoneNumber,3009
-------------------------------------------