檔案和目錄的訪問控制(2)新增訪問控制

zting科技發表於2017-01-11

檔案和目錄的訪問控制(2) 新增訪問控制

對檔案和目錄訪問控制的操作基本相同,對於同一種操作本書在通常情況下不重複舉例,讀者可自行實踐。

程式碼清單7-9是一個簡單的示例,用來演示對檔案新增訪問控制。

程式碼清單 7-9          對檔案新增訪問控制

using(FileStream file = new FileStream(@”E:AclTestacltest.txt”, FileMode.Open, FileAccess.ReadWrite))

{

FileSecurity security = file.GetAccessControl();

FileSystemAccessRule rule = new FileSystemAccessRule(

new NTAccount(@”XuanHunComputerxuanhun”), FileSystemRights.Read,

AccessControlType.Allow);

 

 security.AddAccessRule(rule);

 

file.SetAccessControl(security);

}

現在通過分析程式碼清單7-9來了解控制新增單個檔案訪問控制的細節。首先要做的是獲取對檔案的訪問例項,這裡使用FileStream,也許使用File或者FileInfo是你更喜歡的選擇。通過對呼叫GetAccessControl方法來檢索該檔案的安全物件(型別為FileSecurity);除了包含其他內容以外,該物件還包含一組有序的訪問規則,它們共同確定了各種使用者和組對該檔案所具有的權利。在該示例中,將一個新的訪問規則新增到FileSecurity物件中,以便向名為xuanhun的使用者授予檔案的訪問權。在更改生效之前,必須將其持久儲存在儲存器中。最後這個步驟是通過呼叫SetAccessControl方法完成的。

程式碼清單7-9說明了如何向現有檔案分配訪問權,那麼如何在建立檔案的初始就分配許可權呢?這樣做有一個重要的安全原因:可確保安全的物件總是用一些預設的安全語義建立的。預設情況下,分層式資源管理器(例如檔案系統或登錄檔)中的物件從其父物件中繼承它們的安全設定,檔案從它們的父目錄中繼承它們的安全設定。預設權利取決於所建立物件的型別,而且可能不是您所希望的那樣。例如,您很少會有意建立每個人都具有完全訪問許可權的物件,但這卻可能恰好是預設安全設定所指定的許可權。不能簡單地用預設安全設定建立物件並且在以後修改這些設定,產生此問題的原因是:在已經建立物件之後對其加以保護會開啟一個機會視窗(在建立和修改之間),在此期間,該物件可能被劫持。劫持可能導致建立者失去對剛剛所建立物件的控制,這會造成災難性的後果。程式碼清單7-10演示了在如何建立檔案時配置訪問規則。

程式碼清單 7-10             為新建立檔案新增規則

   FileSecurity security = new FileSecurity();

            FileSystemAccessRule rule = new FileSystemAccessRule(

                new NTAccount(@”XuanHunComputerxuanhun”), FileSystemRights.Read,

                AccessControlType.Allow);

            security.AddAccessRule(rule);

            FileStream file = new FileStream(

                @”M: empsample.txt”, FileMode.CreateNew,  FileSystemRights.Read,

                FileShare.None, 4096, FileOptions.None, security);

程式碼清單7-10與程式碼清單7-9執行的是相同的操作,但順序不同,並且無需持久儲存更改(因為物件是全新的)。在建立檔案之前,先建立一個FileSecurity物件,並且用所需的訪問規則填充它。隨後,FileSecurity例項被傳遞給檔案的建構函式,該檔案從一開始就被正確地加以保護。

 —————-注:本文部分內容改編自《.NET 安全揭祕》。

 

本文轉自玄魂部落格園部落格,原文連結:http://www.cnblogs.com/xuanhun/archive/2012/06/23/2559584.html,如需轉載請自行聯絡原作者


相關文章