Windows

帶有使用者帳戶的 Windows 2003 IIS FTP 伺服器遷移

  • November 1, 2012

我試圖找出將 FTP 伺服器從舊硬體遷移到新硬體的最佳方法。伺服器在域上,但並非所有在伺服器上設置的使用者(使用 FTP)都是域帳戶,有些是伺服器本地的。

例如,我有兩種方式的使用者:

域\使用者名機器名\使用者名

新機器名稱將不同。

所以我需要將所有具有權限的文件從舊伺服器複製到新伺服器。然後我需要將所有使用者帳戶從舊伺服器轉換到新伺服器。然後我需要更改文件權限,使它們不再是 oldserver\username 而是 newserver\username。

這可以用 CALCS 完成嗎?有沒有一種簡單的方法可能我錯過了?

這個問題沒有“簡單”的解決方案——本地帳戶的 ACL 在移動到新伺服器時會失去,因為與該使用者關聯的 SID 不再映射到有效的使用者帳戶。

有一種方法可以做到這一點,而不必清除您的系統。我將介紹我認為最簡單的方法,使用 Powershell(帶有 WMI)、icacls 和一些文本編輯。

  1. 在新伺服器上創建所有新使用者
  2. 在舊伺服器和新伺服器上,獲取所有使用者名到 SID 映射的列表。為此,請打開 Powershell 並執行命令(在每台伺服器上):

獲取 wmiobject win32_useraccount | 在哪裡 { $_.localaccount } | 導出-csv serverusers.csv 3. 您現在有一些手動工作要做 - 您需要獲取兩個電子表格並將 SIDS 從舊伺服器使用者映射到新使用者。在新的 CSV ( c:\sids.csv) 中創建它,格式如下:oldusername,newusername,oldsid,newsid 4. 在舊伺服器上,使用 icacls 保存您關心的文件的 ACL。例如,如果您的文件位於名為的文件夾中,c:\ftproot\您將進入該文件夾並執行以下操作:

icacls * /save c:\acls.bak /T 5. 現在您需要對 acls.bak 文件進行搜尋和替換 - 對於 CSV 中的每一行,找到 oldsid 的所有實例並將其替換為 newsid。這是一個用於執行此操作的 powershell 腳本:

$ file = get-content C:\acls.bak -encoding unicode $ csv = import-csv c:\sids.csv

foreach ( $ row in $ csv) {

$ file = $ 文件 - 替換 $ row.oldsid, $ row.newsid

}

設置內容 c:\acls2.bak $file -encoding unicode 6. 將所有文件複製到新伺服器 7. 在新伺服器中的文件上恢復 ACL(再次假設它位於 c:\ftproot 下):

ICACLS . /恢復 c:\acls2.bak /T

應該這樣做 - 文件現在應該具有使用新本地使用者帳戶設置的權限。

引用自:https://serverfault.com/questions/130490