天天看點

檔案和目錄的通路控制(1) 通路控制清單檔案和目錄的通路控制(1) 通路控制清單

權限的概念相信你已經不陌生了,那麼如何設定一個檔案的通路權限呢?程式設計可不可以實作動态的控制檔案權限資訊呢?答案是肯定的,.NET可以做到這些。

自由通路控制清單(Discretionary Access Control List,DACL)(有時縮寫為ACL)是一種Microsoft Windows NT 和更高版本用于保護資源(例如檔案和檔案夾)的機制。DACL包含多個通路控制項(Access Control Entry,ACE)。通路控制項将一個主體(通常是一個使用者賬戶或使用者賬戶組)與一個控制資源的使用的規則相關聯。通過DACL 和ACE,可以基于與使用者賬戶關聯的權限允許或拒絕資源的權限。例如,可以建立一個ACE,并将其應用于某個檔案的DACL,以阻止除管理者以外的任何人讀取該檔案。

系統通路控制清單(System Access Control List,SACL)(有時稱為稽核 ACE)是一種控制與資源關聯的稽核消息的機制。與DACL相似,SACL包含定義指定資源的稽核規則的 ACE。通過稽核ACE,可以記錄通路資源的成功嘗試或失敗嘗試,但與通路ACE不同的是,稽核ACE不控制哪些賬戶可以使用某個資源。例如,可以建立一個ACE并将其應用于某個檔案的SACL,以記錄打開該檔案的所有成功嘗試。

System.Security.AccessControl命名空間通過一些友善的類(這些類抽象化Windows ACL 安全系統的大部分複雜性)提供對通路控制清單(ACL)的通路。此外,System.Security.AccessControl命名空間還包含幾個提供對Windows ACL安全系統的進階通路的類。

.NET Framework提供對下列資源的ACL的通路:加密密鑰、目錄、事件等待句柄、檔案、Mutexes、系統資料庫項、信号量。

上述每個資源都有幾個用于建立和修改ACL的類,本節主要關注目錄和檔案的通路控制。這些類如下:

該類表示目錄的通路控制和稽核安全。該類指定系統目錄的通路權限以及通路嘗試的稽核方式。此類将通路和稽核權限表示為一組規則,每個通路規則由一個FileSystemAccessRule對象表示,而每個稽核規則由一個FileSystemAuditRule對象表示。

該類指定系統檔案的通路權限以及如何稽核通路嘗試。此類将通路和稽核權限表示為一組規則,每個通路規則由一個 FileSystemAccessRule 對象表示,而每個稽核規則由一個FileSystemAuditRule 對象表示。使用該類可檢索、添加或更改表示檔案的 DACL 和 SACL 的通路規則。

DirectorySecurity類和FileSecurity類是對基礎Microsoft Windows檔案安全系統的抽象。在此系統中,每個目錄都有一個自由通路控制清單(DACL)和一個系統通路控制清單(SACL),前者控制對目錄的通路,後者指定要稽核的通路控制嘗試。FileSystemAccessRule和FileSystemAuditRule 類是對組成DACL和SACL的通路控制項(ACE)的抽象。

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

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

繼續閱讀