程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 文件和目錄的訪問控制(2) 添加訪問控制

文件和目錄的訪問控制(2) 添加訪問控制

編輯:關於.NET

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

代碼清單7-9是一個簡單的示例,用來演示對文件添加訪問控制。

代碼清單 7-9          對文件添加訪問控制

using(FileStream file = new FileStream(@"E:\AclTest\acltest.txt", FileMode.Open, FileAccess.ReadWrite))
    
{
    
FileSecurity security = file.GetAccessControl();
    
FileSystemAccessRule rule = new FileSystemAccessRule(
    
new NTAccount(@"XuanHunComputer\xuanhun"), 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(@"XuanHunComputer\xuanhun"), FileSystemRights.Read,
    
             AccessControlType.Allow);
    
         security.AddAccessRule(rule);
    
         FileStream file = new FileStream(
    
             @"M:\temp\sample.txt", FileMode.CreateNew,  FileSystemRights.Read,
    
             FileShare.None, 4096, FileOptions.None, security);

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

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

作者:玄魂

出處:http://www.cnblogs.com/xuanhun/

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved