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

2021-09-22 10:44:12 字數 1606 閱讀 4862

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

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

**清單 7-9

對檔案新增訪問控制

using(filestream file = new filestream(@"e:\acltest\acltest.txt", filemode.open, fileaccess.readwrite))

現在通過分析**清單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 安全揭秘》。

檔案和目錄的訪問控制 4 審核規則

到目前為止,只是討論了訪問控制規則,它們構成了物件的 dacl dacl 可以由物件的所有者任意更改,還可以由所有者已經給予其更改 dacl 許可權的任何人更改。物件的安全描述符包含另乙個規則列表,稱為系統訪問控制列表 system access control list sacl 該列表將控制系統...

Apache目錄訪問控制

apache通過配置的方式實現對請求資源的控制,基本對目錄控制的配置如下 option indexes includes execcgi followsymlink allowoverride none order allow deny allow from all 這裡的配置都是針對 home h...

檔案訪問控制列表

一般許可權 特殊許可權 隱藏許可權其實有乙個共性 許可權是針對某一類使用者設定的。如果希望對某個指定的使用者進行單獨的許可權控制,就需要用到檔案的訪問控制列表 acl 了。通俗來講,基於普通檔案或目錄設定acl其實就是針對指定的使用者或使用者組設定檔案或目錄的操作許可權。另外,如果針對某個目錄設定了...