2010-11-27 48 views
3

我一直在試圖理解使用BackupRead和BackupWrite在計算機上備份數據的正確方法,尤其是如何可靠地恢復數據。Windows BackupRead/BackupWrite和ACL

現在我明白如何使用API​​並取得了成功。但有一件事情讓我困擾。 除文件內容本身之外,您可以備份任何備用數據流以及安全信息(ACL)。

現在,如果我要存儲用於備份的ACL數據,然後再一次需要在不同的機器或新設置的機器上恢復數據,那麼應該如何處理與ACL相關的SID? SID很可能不再適用於機器,應該如何選擇合適的用戶? 現在我正在更大規模地看待這個問題,假設這是一臺具有多個用戶以及數百或數千個具有不同設置的對象的計算機,這將會使得通過再次應用安全設置而恢復的數據變得混亂。

這是什麼東西,如果軟件的用戶想要備份安全設置,用戶必須對自己做些什麼並相應地更新它們,或者是什麼?

此外,BackupRead和BackupWrite會給我這些項目的原始二進制數據,這些數據並不是很難使用,但顯然這個API甚至不打算面對這個問題。

任何人都知道備份應用程序應該如何處理這種情況?你對這個特定主題有什麼想法或者指導方針?

非常感謝。

回答

2

我認爲你正確理解備份和恢復數據的問題。我認爲對問題的正確理解是解決問題的一半。我想你是像大多數用戶一樣,大多是軟件開發人員,而不是大型網絡的管理員。所以你從軟件開發人員的另一面看到問題,而不是從管理員那邊看到問題。管理員知道ACL的備份和恢復限制,並且已經使用它。

一般而言,您應該瞭解備份的主要目的是保存數據並在以後的數據庫或同一臺計算機或服務器上恢復數據。另一種標準情況是:在硬件更換後,從一臺服務器恢復備份到另一臺服務器。在舊的服務器不再存在的情況下。大多數情況下,備份服務器和組織工作的客戶端,所以,重要的數據將被保存在客戶端計算機。

在大多數情況下,備份的數據具有域組的SID,域用戶的SID,well-known SIDs或從安全描述符的BUILTIN域SID別名。在這種情況下,根本不需要改變SID。如果管理員確實會對ACL進行一些更改,則可以使用不同的現有實用程序,如SubInACL.exe

如果你寫的備份/恢復要使用與安全信息移動數據,你可以在備份包括有關保存的安全描述符中使用用戶/羣組的本地SID的一些額外的元信息軟件。在恢復軟件中,您可以提供從保存的安全描述符中替換SID的可能性。許多年前,我曾爲一位大客戶寫過一些實用程序,用於在域遷移後清除文件系統,註冊表和服務中的SD中的SID。這並不複雜。所以我建議你可以在你的備份/恢復軟件中實現相同的功能。

2

我確實相信Backup * API主要用於在同一臺機器上進行備份和恢復,這將導致SID問題不相關。但是,假設您需要在新安裝中恢復備份的情況,以下是我對解決方案的看法。

對於衆所周知的SID,比如Everyone,Creator Owner等,沒有任何問題。

對於依賴於域的SID,您可以按原樣保存它們,如果需要,還原後可以修復域部分。可能你應該爲這樣的SID存儲域名。

對於本地用戶和組,至少應存儲每個SID的用戶/組名。基於這些名稱還原可以部分自動進行還原,或者向用戶詢問用戶是否希望將此用戶映射到新本地用戶,然後將這些SID轉換爲衆所周知的SID(手動設置用戶界面) ,或保持原樣。

與此類SID相關的大多數問題都可以(也可能通常會)自動處理。我當然會欣賞一個足夠聰明的備份應用程序,可以完成我要求的恢復,並發現舊機器上的「Erik」也必須是新機器上的「Erik」。

另外,如果您決定採用這樣的解決方案,請記住開始隔夜數據傳輸是多麼令人討厭,只是爲了回到某個彈出窗口阻止5%的事情,它可能同樣輕鬆地推遲:)