檔案和目錄的訪問控制(2)新增訪問控制
檔案和目錄的訪問控制(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,如需轉載請自行聯絡原作者
相關文章
- 類的訪問控制
- Mongodb訪問控制MongoDB
- Flask——訪問控制Flask
- RabbitMQ訪問控制MQ
- Nginx訪問控制Nginx
- Swift 訪問控制Swift
- 如何實現多層目錄下訪問控制器
- AWS身份和訪問管理模組新增標籤和基於屬性的訪問控制能力
- Struts2實現訪問控制
- Swift 中的訪問控制Swift
- ABAC訪問控制模型模型
- JoomlaACL訪問控制列表OOM
- java 訪問控制符和supper,thisJava
- 阿里雲NASNFS服務的檔案訪問控制阿里NFS
- nginx配置web訪問以及檢視目錄檔案NginxWeb
- Swift的訪問控制講解Swift
- Nginx 對訪問量的控制Nginx
- IOS - ACL (訪問控制列表)iOS
- HTTP之訪問控制「CORS」HTTPCORS
- Vue前端訪問控制方案Vue前端
- Ubuntu 增加埠訪問控制Ubuntu
- web application 訪問控制WebAPP
- 控制資料訪問(一)
- openGauss 訪問控制模型模型
- Nginx執行控制虛擬主機和訪問控制Nginx
- 支援 ACL 訪問控制、引入 HOCON 全新配置檔案格式
- 時代億信檔案共享訪問控制閘道器概述
- 控制對網站的訪問 (轉)網站
- weblogic控制檯訪問慢問題Web
- 改變檔案或目錄的訪問許可權命令(轉)訪問許可權
- 006.Nginx訪問控制Nginx
- Casbin訪問控制框架入門框架
- 遠端訪問及控制——ssh
- 訪問控制之9種元素
- Oracle資料庫訪問控制Oracle資料庫
- SSH遠端訪問及控制
- Swift 3必看:新的訪問控制fileprivate和openSwift
- DB2_基於標籤的訪問控制LBACDB2