批量(导入导出)迁移AD中的用户信息和密码到新环境中,同时保持用户在MOSS中的权限【addusers,ldifde,copypwd,UserInfo,tp_SystemID】...
工具介紹:
1、ldifde是系統自帶命令行工具,直接在cmd就可以運行。
2、addusers是在wind2k?resource?kit中的命令工具,可以通過安裝wind2k?resource?kit來獲取,下載地址:http://download.microsoft.com/download/8/e/c/8ec3a7d8-05b4-440a-a71e-ca3ee25fe057/rktools.exe
3、copypwd可以導出、導入域用戶的密碼,可以在遷移用戶之后,用來恢復用戶的密碼,當然了,由于導出的密碼是hash的結果,能夠被解密,為安全起見,使用之后請將導出的密碼文件刪除。下載地址:http://blogimg.chinaunix.net/blog/upfile2/081231194831.zip
用到的sql:
? sql來自: http://vspug.com/dustin/2007/04/08/stsadm-in-a-gui-2007-version/
?
同步MOSS的用戶SID,和AD的用戶SID保持一致DECLARE?@login?varchar(40),?@systemid?varbinary(128)
DECLARE?curUsers?CURSOR?LOCAL?FOR
SELECT?tp_login,?tp_systemid?FROM?userinfo?where?tp_deleted?=?0
OPEN?curUsers
????FETCH?NEXT?FROM?curUsers?INTO?@login,?@systemid
WHILE?@@FETCH_STATUS?=?0
BEGIN
????PRINT?'Resetting?user?'?+?@login?+?'?to?new?SID?'
????PRINT?suser_sid(@login)
????UPDATE?UserInfo
????????SET?tp_systemid?=?suser_sid(tp_login)?WHERE?CURRENT?OF?curUsers
????FETCH?NEXT?FROM?curUsers?INTO?@login,?@systemid
END
CLOSE?curUsers
DEALLOCATE?curUsers
GO
另外介紹:
工具ADSI Editor也是一個很好用的工具,可以編輯AD中的很多信息,還可以使我們更加了解AD。可以通過安裝系統安裝盤的【I386\SUPPORT\TOOLS】目錄中的SUPTOOLS.MSI,來安裝。也可以下載:http://download.microsoft.com/download/3/e/4/3e438f5e-24ef-4637-abd1-981341d349c7/WindowsServer2003-KB892777-SupportTools-x86-ENU.exe文件進行安裝。
需求說明:
如果你的AD環境因為多次的修改,例如調整域名、修改設置、反復安裝和域相關的軟件,導致在安裝某些軟件的時候會提示你【聯系不上域,找不到域控制器】之類的錯誤的時候,這時候你想到了重新安裝系統和域,但是域中的用戶怎么辦?就算用戶搶救回來了,可是大多用戶都修改了密碼,想要這次變動在他們不知道的情況下,而且他們不會向你的上司抱怨“怎么密碼又給我重置了,你們IT的每天都在做什么啊”,然后這些抱怨最終是會落到你的頭上的,這時候怎么辦?密碼也回來了,可是用戶的SID呢?在MOSS網站中用戶的權限怎么辦?新添加的用戶雖然和以前的用戶信息都一致,可是SID不一致,導致用戶在MOSS網站的權限需要重新配置,在不能編輯新用戶的SID的情況下(至少現在還不知道如何編輯域用戶的SID值),如何修改它們在MOSS網站中的映射用戶的SID值呢?
?
步驟說明:
1、導出指定的組織單元信息,192.168.0.1為域控制器的IP
ldifde -f c:\exportOu.ldf -s 192.168.0.1 -d "dc=moss,dc=com" -p subtree -r "(&(objectClass=organizationalUnit)(ou=TestOu))" -l "cn,name,objectClass,ou,DistinguishedName,objectCategory"
2、導出指定的域(組織單元)中用戶信息,192.168.0.1為域控制器的IP
ldifde -f c:\exportUser.ldf -s 192.168.0.1 -d "ou=TestOU,dc=moss,dc=com" -p subtree -r "(|(objectClass=user)(objectClass=group))" -l "cn,name,objectClass,displayName,DistinguishedName,sAMAccountName,sn,title,userPrincipalName"
3、導入域組織單元信息,192.168.0.1為域控制器的IP
ldifde -i -f c:\exportOu.ldf -s 192.168.0.1
4、導入域中用戶信息,192.168.0.1為域控制器的IP
ldifde -i -f c:\exportUser.ldf -s 192.168.0.1
5、導出域用戶密碼【不能在遠程中執行這個命令,只能在本機使用這個命令,運行的同時注意關閉防火墻軟件,不能修改命令中的文件名copypwd.txt】
copypwd dump > copypwd.txt
6、導入域用戶密碼,自動查找同目錄的copypwd.txt文件
copypwd set
7、啟用賬戶【導入用戶之后賬戶是禁用狀態】
8、修改賬戶的密碼策略為【密碼永遠不過期】
9、使用AD的賬號SID同步MOSS的內容數據庫的【UserInfo】中的【tp_SystemID】列的對應值,使用開始工具中介紹的用到的sql【同步MOSS的用戶SID,和AD的用戶SID保持一致】,因為在MOSS網站的內容數據庫的UserInfo表中存儲了登錄網站的用戶信息,其中的tp_SystemID列存儲的是AD的域用戶的SID值,所以我們在新建用戶之后可以使用這段SQL來更新UserInfo表中的tp_SystemID列,使其和新添加的用戶的SID保持一致,這樣新添加的用戶在MOSS網站中的權限就可以不用重新配置了。
注意:
1、導入密碼之后密碼策略會變成【下次登陸需要修改密碼】,只要在登陸之前設置為【密碼永遠不過期】
2、導入密碼之前刪除不需要導入密碼的帳戶信息,只導入需要恢復密碼的帳戶信息,刪除例如administrator之類的系統帳戶信息
3、使用addusers導入導出域用戶有局限,因為導出的用戶信息屬性有限,有的屬性導不出來
4、使用ldifde導入組織單元和用戶的時候有一些屬性不能導入,我剛開始導出的時候就是想多導出一些屬性,然后把這些屬性都導進去,用戶信息就齊全了,可是后來發現有的屬性可以導出,但是導入的時候就會提示【架構不正確】之類的錯誤信息,經過多次嘗試,刪除不能導入的屬性,就可以正常運行了。
?
?
下面是另外一位老兄的blog,原文地址如下,大家也可以參考。
?http://imdbt.blog.51cto.com/903896/213331
【現象】客戶的一臺MOSS服務器遷移到了一個新域,域名不同。原來的用戶賬號也遷移過來了,用戶可以登錄到域,但是訪問MOSS的時候提示沒有權限,重新授權后也可以訪問。【分析】AD賬號遷移到新域之后,SID發生了變化。MOSS網站的WSS_Content數據庫中Userinfo表中存儲的還是舊的SID,所以提示無法訪問。有部分賬號客戶手工重新添加到MOSS中了,這部分賬號不能更新SID,因為Userinfo表有一個tp_siteid,tp_login,tp_deleted的組合主鍵,不運出現重復。【解決方法】1.將WSS_Content 數據庫中UserInfo表中的賬號和SID 都更新為新域的賬號和SID2.使用游標技術,每次取一個賬號3.使用Suser_SID(‘LoginName’) 函數獲取賬號的SID4.Replace(列名,'字符串','字符串')用來替換舊的域名為新的域名5.begin try ....end try, begin catch...end catch 語句用來進行異常處理,讓代碼出現異常之后,還能繼續向下執行【修復代碼】DECLARE?@Login?Varchar(40), @Systemid?Varbinary(128)?DECLARE?Curusers?CURSOR?LOCAL?FOR????
????????SELECT?Tp_Login, Tp_Systemid?FROM?Userinfo?Where?Tp_Deleted = 0?
OPEN?Curusers?
FETCH?NEXT?FROM?Curusers?INTO?@Login, @Systemid?
WHILE?@@FETCH_STATUS = 0?
BEGIN?
Begin?Try?
??PRINT?'Resetting Login '?+ @Login +?' To New Login '?
??Update?Userinfo?Set?Tp_Login=Replace(Tp_Login,?'舊域名\','新域名\')?
?????????????WHERE?CURRENT?OF?Curusers?
End?Try?
Begin?Catch?
??PRINT?'Resetting Login '?+ @Login +?' Failed! '?
??PRINT?Error_Message()?
End?Catch?
Begin?Try?
??PRINT?'Resetting SID '?+ @Login +?' To New SID '?
??PRINT?Suser_Sid(@Login)?
??UPDATE?Userinfo?SET?Tp_Systemid =?Suser_Sid(Tp_Login)????
????????WHERE?CURRENT?OF?Curusers?
End?Try?
Begin?Catch?
???PRINT?'Resetting SID '?+ @Login +?' Failed! '?
???PRINT?Error_Message()?
End?Catch?
FETCH?NEXT?FROM?Curusers?INTO?@Login, @Systemid?
END?
CLOSE?Curusers?
DEALLOCATE?Curusers?
轉載于:https://www.cnblogs.com/virusswb/archive/2009/10/30/1593336.html
總結
以上是生活随笔為你收集整理的批量(导入导出)迁移AD中的用户信息和密码到新环境中,同时保持用户在MOSS中的权限【addusers,ldifde,copypwd,UserInfo,tp_SystemID】...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字人民币是什么意思 会有什么影响
- 下一篇: 24小时学通linux视频教程下载