Windows 文件权限是否遵循:
- 该文件,或者...
- 文件系统位置
假设我在“C:\MyFile.txt”有一个文件。我对这个文件设置了一些非常具体的权限。
稍后,我将一个新文件复制到该文件的顶部。名称相同,文件系统位置相同。
它是否继承了相同的权限,还是自带了其自己的权限?
答案1
在创建文件时,它会被分配创建目录中标记为“可由文件继承”的权限。在文件的生命周期内,它只会在以下情况下更改权限:
- 直接在文件本身上更改权限
- 目录树上层的改变会影响它已经拥有的继承权限之一(添加或减少)。
- 目录树上层的更改会添加或删除继承的权限
- 在树的上层,管理员执行“替换下属对象的所有权限”推送,这将使用管理员在目录树中向下推送的权限覆盖文件上的所有权限。
要记住的关键一点是所有 NTFS 权限都是明确的。继承权限是设置了“继承”标志的权限,但它仍然是该权限。除了最上面的要点之外,Windows 必须触及可继承权限更改点以下的每个文件才能真正进行更改。
这就是为什么如果你在 500 万个文件目录树的顶部更改权限,然后慌乱地点击“取消”按钮,你就把自己搞砸了。因为权限将在整个 500 万个文件目录树中不一致地应用,唯一的解决方法是设置权限并让其完成应用,然后再次将其删除,或者执行“将这些权限强制应用于我下面的所有内容”,这将删除该点以下的任何自定义权限。
反正...
如其他地方所述,在同一文件系统内移动文件不算作“创建”,因此它会保留启动时拥有的任何权限。文件系统之间的移动是“创建”,因此文件将根据其移动到的位置获得权限。
大多数应用程序认为“覆盖”实际上是“删除并重新创建”,这会导致被覆盖的文件根据其位置获得继承的权限。如果覆盖实际上是“将文件清零并重新填充新数据”,则它不是创建,并且将保留覆盖前的任何权限;这样做的应用程序很少见。
答案2
答案是:如果您用新文件替换旧文件(新文件将具有自己的权限 - 取决于您使用哪种方式将其移动到旧文件),您将丢失权限设置,如果您只是将文件复制到其他地方,也是如此。如果您只是重命名或移动到其他目录,它不会丢失权限设置。
看权限如何工作在技术网上和了解 Windows NTFS 权限了解有关该主题的更多详细信息。
更具体的解释:http://www.tech-faq.com/ntfs-permissions-after-copying-or-moving-files.html(感谢 kwbaker 提供链接)
底线:
复制文件时,它将继承复制到的文件夹的权限。如果移动文件 - 它将保留在新位置的原始权限。(Jeff Hengesbach)
答案3
Alexey 是正确的——尽管权限是文件和目录(而不是位置)的属性,但不同的移动/复制方法会对这些权限产生不同的影响。 这一页有一个简短的摘要。