如何解决NTFS移动/复制设计缺陷?


31

正如处理文件服务器权限的任何人都知道的那样,NTFS具有一个有趣的设计功能/缺陷,称为“移动/复制”问题。

如所解释的该MS的知识库文章中,对于一个文件夹或文件的权限不会自动从父,如果文件夹被移动继承以及源和目的地是否相同NTFS卷上。如果复制了文件夹,或者源和目标位于不同的卷上,则继承权限。

这是一个简单的示例:

您在同一NTFS卷上有两个共享文件夹,分别称为“技术人员”和“管理人员”。“技术人员”组具有对“技术人员”文件夹的RW访问权限,而“管理者”组具有对“经理”文件夹的RW访问权限。如果某人可以同时访问这两个文件夹,并且他们将子文件夹从“ Managers”文件夹移至“ Technicians”文件夹,则移动的文件夹仍仅对“ Managers”组中的用户可用。即使位于“技术人员”文件夹下,“技术人员”组也无法访问该子文件夹,并且应该从顶部继承权限。

您可以想象,这会导致解决这些最终用户问题的支持电话,故障单和浪费的时间,更不用说如果用户经常在文件夹上不同安全文件夹/区域之间移动文件夹时可能会产生的大量麻烦。相同的音量。

问题是:

解决此NTFS设计缺陷的最佳方法是什么?如何在您的环境中处理它?

我知道链接的知识库文章讨论了一些用于更改Windows资源管理器默认行为的注册表项,但是它们是客户端的,并且要求用户具有更改权限的能力,如果您使用大多数环境,我认为这是不入门的想要控制您的文件服务器权限(以及您作为系统管理员的理智)。


2
我知道“经理/技术人员”示例只是为了说明缺陷,但是在某些情况下,这就是您想要的行为:如果有人不小心将文件夹从“经理”移动到“技术人员”,您可能不希望技术人员能够访问它。
病房-恢复莫妮卡

2
这确实不是缺陷,这是文件权限的工作方式。自NTFS发行以来已被记录下来。我无法相信有些人建议不要使用文件权限,而只能使用共享权限来控制访问。这违反了Microsoft File Server的安全性的基本要求。之所以不能继承同一卷上的文件夹/文件,是因为该文件夹/文件实际上并没有在磁盘上移动,只是我们看到的指针发生了变化。
Michael Brown

Answers:


12

我的方法是不使用文件/目录级别的文件权限。使用文件共享级别权限,并将整个服务器文件系统数据驱动器设置为“所有人完全控制”(将变得毫无意义)。

多年来(10多年),我发现NTFS权限更加复杂,并导致更多错误。如果权限设置错误或继承被破坏,则您将公开数据,并且很难找到和看到它。另外,您会说到移动/复制问题。

您必须使用目录/文件级别ACL的地方;我没有别的解决方案,除了定期进行健康检查。


10

好吧,这并不是一个缺陷。从NT3.1的beta 2版本开始,就已经制定了移动文件时处理权限的规则(尽管显然不是继承,因为仅在Windows 2000中才添加了继承)。它与Windows的任何功能一样广为人知。我很同情您的观点,因为在这一阶段,我们当中很少有人会为此感到沮丧。但这是系统管理员快速学习的东西。

JR


6
我在他的博客上与Raymond Chen发生了争执。微软“出售” NTFS为具有“继承”权限,然后在出现装甲中的这个特殊缝隙时退回。通过在创建文件时将显式ACE放置在文件上,NTFS在文件创建时具有权限继承。我会争辩说,只要文档和市场营销文献谈到它们的继承系统,就好像文档或代码是实时的有问题的一样。他们应该选择一个并修复它。
埃文·安德森

1
好吧,这是一个权衡。如果继承是实时的,那么每次您在深层树的底部打开文件时,操作系统都必须在树上运行以找出有效的权限。当然,要权衡的是,如果您更改一棵深树顶部的权限,您将等待很久!Active Directory是否使用相同的模型?
约翰·雷尼

在容器之间移动时,AD对象正确继承了新父对象的权限,我认为这是在NTFS中移动文件/文件夹时的预期“正确”行为。
大卫·阿彻

3
@renniej:AD确实使用了真正的实时继承。Netware文件系统已经很久了。如果Microsoft实施了NTFS,它也可以做到。这是“未走的路”。令我感到困扰的是Microsoft文档重新:NTFS和资源管理器像继承一样“播放”是实时的(即说谎)。照原样告诉我们,或通过文档将其修复为jibe!
埃文·安德森

@renniej正如埃文·安德森(Evan Anderson)所说,Netware在1990年成为国王时就做到了这一点。通过创建另一个跟踪“可见性列表”的文件系统索引,可以解决此问题。微软选择不这样做,但是可以想象它会在将来的Windows Server版本中发挥作用。
sysadmin1138

6

自NT 3.51以来,我们一直在使用NTFS,尽管我们已经看到了这个“问题”(几乎每个人都这样),但这并没有给我们带来很多麻烦:

  • 我们总是告诉人们如果需要将文件从一个共享目录移动到另一个目录,则要复制文件。常见的短语是“拖动时按住CTRL键并确保显示小+”。
  • 我们的共享文件夹具有相当简单的结构,并且我们创建的共享文件夹不会经常在组之间交叉,因此人们更倾向于首先复制文件。
  • 我们通常在“公用”空间中看到问题,每个人都可以在其中读取/写入文件夹,但是这些目录的寿命很短,因此清除它们后问题就消失了。

4

我能想到的解决方法:

  • 找到某种方式使具有不同权限的文件夹位于不同的NTFS卷上
  • 进行计划任务(根据支持请求的频率,每小时一次或每天一次),该任务在文件夹中运行,并将所有权限重置为与顶层权限相同。这不理想,如果文件夹中有许多文件,则更不理想,但是如果没有很好的解决方案(例如服务器端注册表修复),这种方法可以解决问题。您要查看的命令称为“ cacls”,然后可以将其添加到批处理文件中。

免责声明-我来自UNIX背景(并且已经实现了最后一个以修复不同的权限缺陷-感觉很棘手,但确实可以完成工作),因此可能有更好的修复方法。


+1-马克给出的第一个答案是最佳选择。这是一个痛苦,但它是解决这个愚蠢的设计决策在NTFS 5.你的最佳途径
埃文安德森

扩展:在这里,我使用SharePoint的伙伴会说“使用SharePoint”!同样,我的版本控制使用预算和文档控制系统使用预算将指向Subversion,Documentum等,并说“使用”。NTFS中的这种设计选择是一个巨大的缺陷,几乎使您想知道,当您不得不在自己的网络中使用Microsoft的软件时,Microsoft是否实际上使用了自己的软件。(让我大吃一惊的是,微软实际上并没有像使用我们的用户那样使用他们的软件。要让一家充满“知识工作者”的公司一定很高兴。)
埃文·安德森2009年

1
我同意,理想情况下,我们可以将所有共享文件夹分离到各自的卷上,在实践中,这对于大型环境(成千上万个共享文件夹)是不可行的。同样,如果没有一些时髦的交汇点或symlink伏都教徒,这意味着将失去拥有对它们具有不同权限的嵌套子文件夹的能力。
大卫·阿彻

1
@David:跨共享移动数据将导致复制和删除。在共享内移动数据将导致移动。如果将每个共享文件夹都设置为权限层次结构的根,而没有子文件夹具有更严格的权限,则可以缓解此问题。不过还是丑陋的。(我的确有W2K3服务器,上面带有2200+个单独的共享文件夹,但我没有看到性能问题...)
Evan Anderson 2009年

3

当以管理员身份迁移时,我使用xcopy / s / e / c / h / r / k / y-除文件所有权和ACL之外的所有内容,这意味着ACL继承会自动开始。从不需要真正处理用户的情况虽然搬东西。


2
您的用户还活着吗?
埃文·安德森

4
有时我想知道...
Maximus Minimus

@Even:也许他们都不属于两组!
SamB 2010年

+1,使人们可以在维护文件时(以及许多其他工具)使用可解决此问题的工具;但是,XCOPY已被贬值:ROBOCOPY.EXE是其强大的后继产品。
jnaab 2011年

2
很抱歉,但不能xcopy _copy_文件(而不是_moving_文件吗?)-看起来作者没有复制问题,他只有_moving_问题。由于经验不足,我可能是错的,因此,如果我错了,请纠正我(即,在使用“ xcopy”之后是否使用“ del”命令,因此实际上是“复制并删除了”文件!) =感动?)
colemik 2012年

3

我使用组策略/安全策略/文件系统来跟踪复杂的权限。(切勿使用策略中的“替换权限”)。

安排CACLS在夜间重置所有权限,然后再执行gpupdate / force重新应用策略中的权限。奇迹般有效。


大概这仅适用于Windows服务器吗?由于组策略必须应用于域对象,所以我不能想象这不能应用于非Windows存储共享吗?
Rich M

2

从Windows 7(或Windows Vista)开始,如果移动文件夹并且源和目标位于同一NTFS卷上,则文件夹或文件DO的权限将从父级继承(如果通过资源管理器复制文件或文件夹)。在较早的操作系统中,您可以使用Far Manager-它允许启用从目标的权限继承(以及大量其他功能)。尽管Far对于一般用户而言似乎并不友好。


0

一个非常简单的解决方法是仅压缩文件并将其解压缩到目标目录。


我已经尝试过了,但是不幸的是它没有用。在对zip存档进行任何操作之前,其压缩权限都不同。保留继承的权限,但不创建显式权限。
Rich M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.