2011-05-21 133 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