设置目录安全性以允许用户并拒绝所有用户
Posted
技术标签:
【中文标题】设置目录安全性以允许用户并拒绝所有用户【英文标题】:Setting directory security to allow user and deny all 【发布时间】:2010-06-07 14:57:08 【问题描述】:我有 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);
这行不通。我不知道我应该否认谁。 Domain\Admins、Domain\Administrators、我...没有人被拒绝,当我检查文件夹的安全性时 - SecuredUser 有权访问该文件夹,但没有检查权限,即使我指定了 FullControl。
基本上我想编写这个代码:
<authorization>
<allow users ="Domain\User" />
<deny users="*" />
</authorization>
我在考虑用没有权限的弱用户模拟 UT 运行,但这会导致:模拟 -> 运行 UT -> 模拟 -> 访问文件夹,我不确定这是否是正确的设计。
非常感谢您的帮助,谢谢。
【问题讨论】:
我不了解 ASP,只是评论文件夹权限...文件夹权限是如果您想访问文件夹/文件进行读/写。它与提供文件无关。该框架处理授权请求的过程,但我不确定此过程中涉及的所有组件。 @Brian,'这与提供文件无关'是什么意思?我不确定我明白你的意思。 用户导航到mysite.com/myfile.aspx 的访问权限不会查看目录权限,即使对于 Windows 安全应用程序也是如此。 希望我明白你的意思;我认为我的问题问得不好 :) 我编辑了它,我希望它现在更有意义。 【参考方案1】:对此我不确定,但我认为拒绝优先于允许。因此,如果您尝试拒绝所有人的权限(使用组“Everyone”),它可能会覆盖您尝试授予访问权限的特殊用户的权限。 应该做的是删除所有现有的访问权限,然后添加允许特殊用户访问的单个规则。
【讨论】:
【参考方案2】:我刚刚测试了来自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”,则访问权限将完全按照添加的方式显示在安全选项卡中。似乎只有在每个子目录下继承和传播权限时才勾选安全选项卡中的一长串访问权限。
【讨论】:
您好 apoorv020,感谢您的回复。它似乎对我不起作用。我也在运行 Windows 7,是的,我在高级下看到完全控制,但在主安全选项卡中没有任何内容。但这对我的困扰较少 - 真正困扰我的是,我无法将此文件夹的权限撤消给任何其他用户。我不明白我错过了什么。 感谢您清除标志问题,我用更改编辑了我的问题。【参考方案3】:您是否考虑过帐户组“domainName\Domain Users”?拒绝访问该组应该拒绝访问指定域中的所有用户。
【讨论】:
以上是关于设置目录安全性以允许用户并拒绝所有用户的主要内容,如果未能解决你的问题,请参考以下文章
配置安全性以仅允许某些用户更新条目,但允许在 Backand 中读取所有用户