【发布时间】: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 安全应用程序也是如此。
-
希望我明白你的意思;我认为我的问题问得不好 :) 我编辑了它,我希望它现在更有意义。
标签: c# .net impersonation folder-security