2010-06-07 47 views
1

我有winforms應用程序,其中需要訪問安全目錄。 我使用模擬並創建WindowsIdentity來訪問該文件夾。設置目錄安全性以允許用戶和拒絕全部

我的問題是編寫單元測試來測試目錄的安全性;我想編寫一個代碼,創建一個僅保護一個用戶的目錄,而不是當前運行UT的用戶(否則測試將毫無價值)。

我知道如何給某個用戶添加權限,但是我怎麼能否認剩下的,包括管理員? (如果用戶運行UT是一個管理員)(這是明智的事情嗎?)

DirectoryInfo directoryInfo = new DirectoryInfo(path); 
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl(); 

directorySecurity.AddAccessRule(new FileSystemAccessRule("Domain\SecuredUser", 
        FileSystemRights.FullControl, 
        InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, 
        PropagationFlags.InheritOnly,       
        AccessControlType.Allow)); 

directorySecurity.RemoveAccessRule(new FileSystemAccessRule("??", 
        FileSystemRights.FullControl, 
        InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, 
        PropagationFlags.InheritOnly, 
        AccessControlType.Deny)); 

directoryInfo.SetAccessControl(directorySecurity); 

這是行不通的。我不知道我應該否認誰。域\管理員,域\管理員,我...沒有人被拒絕,並且當我檢查文件夾的安全 - SecuredUser有權訪問該文件夾,但權限不檢查,即使我指定FullControl。

基本上我想要實現代碼:

<authorization> 
<allow users ="Domain\User" /> 
<deny users="*" /> 
</authorization> 

我在想冒充UT運行與沒有權限的弱用戶,但是這會導致:冒充 - >運行UT - >模擬 - >訪問文件夾,我不確定這是否是正確的設計。

幫助將不勝感激,謝謝。

+0

我不知道ASP,只是評論文件夾權限...文件夾權限是如​​果你想訪問文件夾/文件的讀/寫。它與提供文件無關。該框架處理授權請求的過程,但我不確定此過程中涉及的所有組件。 – 2010-06-07 15:46:53

+0

@布萊恩,你是什麼意思,'它與提供文件無關'?我不確定我明白你的意思。 – Rita 2010-06-07 19:11:11

+0

訪問用戶以導航到http://www.mysite.com/myfile.aspx不會查看目錄權限,即使對於Windows安全應用程序。 – 2010-06-07 21:02:05

回答

1

我剛剛測試了來自http://msdn.microsoft.com/en-us/library/system.io.directoryinfo.setaccesscontrol%28v=VS.100%29.aspx的msdn示例代碼,我遇到了同樣的問題。當我一步一步地調試示例程序時,添加的訪問權限只是「特殊權限」,而不是程序中指定的「readdata」。
更新:在Windows 7中,在文件 - >屬性 - >安全 - >高級 - >有效權限下,權限顯示爲通告。 「特殊許可」上的勾號實際上是誤導性的。
Update2:如果使用五參數構造函數並將標誌設置爲「InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit」和「PropagationFlags.InheritOnly」,那麼該訪問將按照添加時的安全選項卡顯示。看起來安全選項卡中的長訪問列表被勾選,只有在每個子目錄下權限被繼承和傳播時纔會被打勾。

+0

嗨apoorv020,感謝您的回覆。它似乎不適合我。我也運行Windows 7,是的,我看到完全控制下的高級,但沒有在主要的安全選項卡。但是這讓我感到困擾 - 真正困擾我的是,我無法撤消對其他用戶的此文件夾的權限。我不明白我錯過了什麼。 – Rita 2010-06-07 19:09:18

+0

謝謝你解決國旗問題,我修改了我的問題。 – Rita 2010-06-07 22:19:49

2

我不確定這一點,但我認爲拒絕優先於允許。因此,如果您嘗試拒絕每個人的權限(使用「Everyone」組),它可能會覆蓋您嘗試授予訪問權限的特殊用戶的權限。
應該工作的是刪除所有現有訪問權限,然後添加允許特殊用戶訪問的單個規則。

0

您是否考慮過帳戶組「{domainName} \ Domain Users」?拒絕訪問此組應拒絕訪問指定域中的所有用戶。

相關問題