【发布时间】:2012-07-18 22:42:48
【问题描述】:
我的 VB.NET 应用程序构建了一个访问受限的目录树。
访问权限应该是普通用户不能删除或重命名现有树。但是用户可以在树中的任何位置添加新文件/文件夹。任何用户都应该可以完全修改用户创建的文件/文件夹。
我遇到的问题是设置访问权限,以使应用程序创建的文件/文件夹无法更改,但用户创建的文件/文件夹可以由任何用户更改。
当前发生的情况是应用程序创建的文件/文件夹行为正确。但是当用户创建自己的文件/文件夹时,该文件/文件夹的权限仅列出当前用户。因此其他用户(甚至是应用程序创建的文件/文件夹的系统管理员)无法查看或修改此用户创建的文件/文件夹。
当前代码:(当用户自己创建文件/文件夹时,此代码不授予对 UserGroup 或 AdminGroup 的访问权限,仅授予刚刚创建文件/文件夹的用户)
FolderAcl.AddAccessRule(New FileSystemAccessRule(UserGroup,
FileSystemRights.ReadAndExecute,
InheritanceFlags.None, PropagationFlags.None,
AccessControlType.Allow))
FolderAcl.AddAccessRule(New FileSystemAccessRule(UserGroup,
FileSystemRights.Write,
InheritanceFlags.None, PropagationFlags.None,
AccessControlType.Allow))
FolderAcl.AddAccessRule(New FileSystemAccessRule(AdminGroup,
FileSystemRights.FullControl,
InheritanceFlags.None, PropagationFlags.None,
AccessControlType.Allow))
FolderAcl.SetAccessRuleProtection(True, False)
另一个尝试:(当用户自己创建文件/文件夹时,此代码授予对 UserGroup 和 AdminGroup 的访问权限,但不授予用户访问权限。用户在 UserGroup 中,但UserGroup 没有删除或修改权限,因此如果用户创建文件/文件夹,他们甚至无法命名。)
' same code as above except...
InheritanceFlags.None ---> InheritanceFlags.Container or InheritanceFlags.Object
我尝试过 InheritanceFlags 和 PropagationFlags 的其他组合,但还没有成功。
有什么想法吗?
谢谢,
迈克
【问题讨论】:
-
我正在寻找的是一个 umask 等价物。我现在看到,当用户在 Windows 中创建一个新文件/目录时,它会从父目录继承它的权限。我希望用户创建的文件可由该用户删除,而不允许用户删除父目录。似乎不可能让这个用户生成的文件/目录继承父权限并为用户添加删除权限。
标签: vb.net permissions file-permissions ntfs folder-permissions