首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将目录安全设置为允许用户并拒绝所有用户

问将目录安全设置为允许用户并拒绝所有用户
EN

Stack Overflow用户
提问于 2010-06-07 22:57:08
回答 3查看 5.4K关注 0票数 1

我有winforms应用程序,其中我需要访问一个安全的目录。我使用模拟和创建WindowsIdentity来访问该文件夹。

我的问题是编写单元测试来测试目录安全性;我想编写一段代码,创建一个只保护一个用户的目录,这个用户不是运行UT的当前用户(否则测试将一文不值)。

我知道如何向某个用户添加权限,但如何拒绝其他用户,包括管理员?(如果运行UT的用户是管理员)(这样做是否明智?)

代码语言:javascript
复制
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);

这不管用。我不知道我该拒绝谁。域\管理员、域\管理员、我...没有人被拒绝,并且当我检查文件夹的安全性时-即使我指定了FullControl,SecuredUser也可以访问该文件夹,但权限不会被检查。

基本上,我想对此进行编码:

代码语言:javascript
复制
<authorization>
 <allow users ="Domain\User" />
 <deny users="*" /> 
</authorization>

我在考虑用一个没有权限的弱用户模拟UT run,但这会导致: Impersonate -> Run UT -> Impersonate -> Access文件夹,我不确定这是不是正确的设计。

非常感谢您的帮助,谢谢。

EN

回答 3

Stack Overflow用户

发布于 2010-06-08 12:55:17

我不确定这一点,但我认为deny优先于allow。因此,如果您尝试拒绝每个人的权限(使用组"Everyone"),它可能会覆盖您试图授予其访问权限的特殊用户的权限。

应该做的是删除所有现有的访问权限,然后添加允许特殊用户访问的单个规则。

票数 2
EN

Stack Overflow用户

发布于 2010-06-08 02:06:00

我刚刚测试了来自http://msdn.microsoft.com/en-us/library/system.io.directoryinfo.setaccesscontrol%28v=VS.100%29.aspx的msdn示例代码,我得到了同样的问题。当我一步一步调试示例程序时,添加的访问权限只是“特殊权限”,而不是程序中指定的"readdata“。

更新:在Windows7中,在文件安全属性->高级->Effective权限下,权限显示为通告。“特殊权限”上的勾号实际上具有误导性。

Update2 :如果使用包含五个参数的构造函数,并将标志设置为"InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit“和"PropagationFlags.InheritOnly",则访问权限将完全按照添加的方式显示在安全选项卡中。似乎只有当权限在每个子目录下继承和传播时,安全选项卡中的长访问列表才会被勾选。

票数 1
EN

Stack Overflow用户

发布于 2011-07-17 12:07:48

您是否考虑帐户组“{domainName}\域用户”?拒绝访问该组应拒绝指定域中所有用户的访问权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2990556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档