任何处理过文件服务器权限的人都知道,NTFS 有一个有趣的设计特性/缺陷,称为移动/复制问题。
正如解释的那样在这篇 MS KB 文章中,如果文件夹被移动,并且源和目标位于同一个 NTFS 卷上,则文件夹或文件的权限不会自动从父级继承。如果文件夹被复制,或者源和目标位于不同的卷上,则权限将被继承。
以下是一个简单的例子:
您在同一个 NTFS 卷上有两个共享文件夹,分别称为“技术人员”和“经理”。技术人员组对技术人员文件夹具有 RW 访问权限,而经理组对“经理”文件夹具有 RW 访问权限。如果有人同时拥有这两个文件夹的访问权限,并且他们将子文件夹从“经理”文件夹移动到“技术人员”文件夹,则移动的文件夹仍然只有“经理”组中的用户可访问。“技术人员”组无法访问子文件夹,即使它位于“技术人员”文件夹下,并且应该从顶部继承权限。
您可以想象,这会导致支持电话、票证和解决这些最终用户问题的浪费周期,更不用说如果用户经常在同一卷上的不同安全文件夹/区域之间移动文件夹,最终可能会产生的权限混乱。
问题是:
解决此 NTFS 设计缺陷的最佳方法是什么以及您如何在您的环境中处理它?
我知道链接的知识库文章讨论了一些注册表项来更改 Windows 资源管理器的默认行为,但它们是客户端的,并且要求用户具有更改权限的能力,我认为在大多数情况下,如果您想控制文件服务器权限(以及作为系统管理员的理智),这是不可能的。
答案1
我的方法是不使用文件/目录级别的文件权限;使用文件共享级别的权限,并将整个服务器文件系统数据驱动器设置为每个人完全控制(这变得毫无意义)。
多年来(10 多年),我发现 NTFS 权限更加复杂,导致的错误也更多。如果权限设置错误,或者继承被破坏,数据就会暴露,而且很难找到和查看。此外,正如您所说,您还会遇到移动/复制问题。
您必须使用目录/文件级别 ACL 的地方;除了定期进行健康检查之外,我不知道还有其他解决方案。
答案2
其实这并不是什么缺陷。移动文件时处理权限的规则至少从 NT3.1 的 beta 2 开始就存在了(虽然显然不是继承,因为继承是 Windows 2000 才添加的)。它是 Windows 中众所周知的功能之一。我非常理解你的观点,因为我们中很少有人没有在某个阶段被这个问题困扰过。但系统管理员很快就能学会这一点。
JR
答案3
我们从 NT 3.51 开始使用 NTFS,虽然我们已经看到了这个“问题”(几乎每个人都看到了),但它并没有给我们带来太多麻烦:
- 我们总是告诉人们,如果需要将文件从一个共享目录移动到另一个共享目录,就需要复制文件。“拖动时按住 CTRL 键,并确保显示小 +”,这是一句常用语。
- 我们的共享文件夹结构相当简单,并且我们创建的共享文件夹不会经常在组之间交叉,因此人们更有可能首先想要复制文件。
- 我们主要在“公共”空间中看到问题 - 每个人都可以读/写的文件夹,但这些目录大多是短暂的,所以当它们被清除时问题就会消失。
答案4
当以管理员身份移动时,我使用 xcopy /s/e/c/h/r/k/y - 除文件所有权和 ACL 之外的所有内容,这意味着 ACL 继承会自动启动。但从来没有真正处理过用户移动东西的情况。