Windows文件权限是绑定到文件还是文件系统位置?

Windows文件权限如下:

  1. 该文件,或…
  2. 文件系统位置

假设我在“C:\ MyFile.txt”中有一个文件。 我在这个文件上设置了一些非常特定的权限

之后,我将一个新文件复制到该文件的顶部。 相同的名称,相同的文件系统位置。

它是inheritance相同的权限,还是带来自己的权限?

在创build一个文件的时候,它将被赋予那些被创build的目录中被标记为可inheritance的文件的权限。对于该文件的生命周期,它将只会在下列情况下更改权限:

  • 权限直接在文件本身上进行更改
  • 目录树更高的更改会影响其已有的inheritance权限之一(加或减)。
  • 目录树更高的更改会添加或删除“inheritance”权限
  • pipe理员进行更高级别的操作,将“所有权限replace为下级对象”,然后用pipe理员将目录树下的权限覆盖文件上的所有权限。

记住一个重要的事情是所有的NTFS权限是明确的 。 inheritance权限是设置了“inheritance”标志的权限,但仍然是该权限。 对于除了最上面的要点之外的所有内容,Windows必须触及低于可inheritance权限被更改的点的每个文件,以便实际进行更改。

这就是为什么如果你在一个五百万文件目录树的顶部进行许可改变,并在恐慌中点击“取消”button,你已经搞砸了。 因为这个权限将不一致的应用在5百万个文件目录树中,修复它的唯一方法就是设置权限并让它完成应用程序,然后再次删除它,或者做一个'强制这些权限给我下面的所有内容'这将删除低于这一点的任何自定义权限。

无论如何…

如别处所述,在同一文件系统中移动文件不会被视为“创build”,因此它在启动时会保留其拥有的任何权限。 文件系统之间的移动是“创build”,因此文件将根据移动到的位置接收权限。

大多数应用程序认为“覆盖”实际上是“删除和重新创build”,这会导致被覆盖的文件根据其位置接收inheritance权限。 如果覆盖实际上是“将文件清零并用新数据重新填充”,则不是创build,并且将保留覆盖之前的任何权限; 这样做的应用程序很less见。

答案是:如果你将用新文件replace文件,你将失去权限设置(新文件将带来自己的权限 – 这取决于你用哪种方式将它移到旧文件上),所以如果你只是将文件复制到其他地方,将会执行此操作。 它不会丢失权限设置,如果你只是重命名或移动到不同的目录。

有关该主题的更多详细信息,请参阅technet上的权限以及了解Windows NTFS权限 。

更具体的解释: http : //www.tech-faq.com/ntfs-permissions-after-copying-or-moving-files.html (感谢kwbaker的链接)

buttom线:

当一个文件被复制时,它将inheritance它复制到的文件夹的权限。 如果文件被移动 – 它将在其新的位置保留其原始的权限。 (Jeff Hengesbach)

阿列克谢是正确的 – 虽然权限是文件和目录的属性(而不是位置),不同的移动/复制方法可以对这些权限有不同的影响。 本页有一个简要的总结。