【问题标题】:give access rule permission to the specific user on local network向本地网络上的特定用户授予访问规则权限
【发布时间】:2011-08-30 03:35:25
【问题描述】:

我的应用程序在本地网络上运行,管理员使用以下代码为共享文件夹上的每个用户创建文件夹: 例如“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);

但出现“访问被拒绝”错误。 如何为特定用户设置权限? 我的意思是管理员可以在创建目录时授予特定用户权限吗? 谢谢。

【问题讨论】:

    标签: c# directory-permissions local-network access-rights


    【解决方案1】:

    首先检查拒绝访问控制规则 (ACE),每个人都在 Everyone 组中。因此,第一个 ACE 将阻止所有人的所有访问,包括您尝试更改权限。

    通常拒绝规则是错误的方法。最好只添加提供您想要授予的访问权限的访问规则,如果没有与身份匹配的允许规则,该身份将被拒绝访问 - 您不需要显式阻止它们。

    【讨论】:

    • 出于安全问题,管理员应该拒绝所有用户的任何访问,但我想设置每个目录允许一个用户。
    • @nafarzane 您需要使用 ACL 的工作方式。拒绝规则优先,并且没有办法创建“拒绝除 Richard 之外的所有人”(例如)规则,除非有一个包含除我之外的所有人的组(这不会超出微不足道的用户数量)。因此,您使用隐式拒绝并积极对待 ACL:任何不允许访问的人都会被拒绝。
    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2016-12-20
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多