2011-05-21 51 views
0

我的應用正在使用本地網絡,管理員使用此代碼爲共享文件夾上的每個用戶創建文件夾: 例如「me1」是本地網絡上的用戶。給本地網絡上的特定用戶授予訪問規則權限

DirectoryInfo d=new DirectoryInfo(@"\\server\Test"); 
DirectoryInfo di = new DirectoryInfo(@"\\server\Test\me1"); 
di.Create(d.GetAccessControl()); 
DirectorySecurity dSecurity = di.GetAccessControl(); 

dSecurity.AddAccessRule(new FileSystemAccessRule("everyone", 
               FileSystemRights.FullControl, 
               AccessControlType.Deny)); 
di.SetAccessControl(dSecurity); 

現在每一個用戶不能訪問自己的文件夾,我用這個代碼:

DirectoryInfo dInfo = new DirectoryInfo(@"\\Server\Test\me1"); 
DirectorySecurity dSecurity = dInfo.GetAccessControl(); 
dSecurity.AddAccessRule(new FileSystemAccessRule("everyone", 
               FileSystemRights.FullControl, 
               AccessControlType.Allow)); 
dInfo.SetAccessControl(dSecurity); 

但錯誤「訪問被拒絕」出現。 如何設置特定用戶的權限? 我的意思是管理員可以在創建目錄時給予特定用戶權限? 謝謝。

回答

1

首先檢查拒絕訪問控制規則(ACE),並且每個人都在Everyone組中。因此,第一個ACE將阻止所有人訪問,包括您嘗試更改權限。

通常拒絕規則是錯誤的方法。如果沒有允許規則匹配身份將被拒絕訪問的身份—,則不需要明確阻止它們,只需添加訪問規則即可授予您想要授予的訪問權限。

+0

出於安全問題,管理員應拒絕所有用戶的訪問權限,但我想爲每個目錄設置一個用戶的允許權限。 – Farna 2011-05-21 09:04:29

+0

@nafarzane您需要使用ACL的工作方式。拒絕規則優先,除非有一個包括除我之外的每個人的組(除了少數用戶之外不會有其他用途),否則無法創建「拒絕除理查之外的所有人」(例如)規則。因此,您使用隱式拒絕和正確對待ACL:任何不允許訪問的人都會被拒絕。 – Richard 2011-05-21 09:08:51

相關問題