Ich habe dies in einem Blog-Beitrag http://think-like-a-computer.com/2011/07/24/moving-files-on-the-same-ntfs-volume-does-inherit-permissions/ erklärt, aber es wird auch unten erklärt.
Wenn eine Datei kopiert wird, muss sie eine brandneue Datei erstellen und ihr einen neuen Satz von Berechtigungen zuweisen, damit sie die Berechtigungen aus dem übergeordneten Ordner erhält, wie Sie wissen.
Wenn eine Datei auf ein anderes Volume verschoben wird, wird sie tatsächlich auf das neue Volume kopiert und die alte Datei gelöscht. Daher wird derselbe Vorgang wie oben wiederholt, da es sich erneut um eine neue Datei handelt und Berechtigungen festgelegt werden müssen.
Wenn die Datei innerhalb desselben Volumes verschoben wird, geschieht nichts wirklich (auf Festplattenebene). Es ändert nur den logischen Pfad der Datei. Die tatsächlichen Daten und physischen Dateien auf der Festplatte wurden nicht berührt oder geändert. Haben Sie jemals bemerkt, dass das Verschieben einer 5-GB-Datei in einen anderen Ordner auf demselben Laufwerk fast sofort erfolgt? Aus diesem Grund hat sich der Zeiger darauf, wo die Datei logisch vorhanden ist, geändert, da er sich tatsächlich nicht bewegt hat. Da es in keiner Weise geändert wurde, ändern sich auch die Berechtigungen nicht.
Dies ist der Grund für dieses Verhalten.
Edit: Etwas, das ich vergessen habe zu erwähnen ... Der MS-Artikel ist nicht ganz korrekt. MS Zitat:
Standardmäßig erbt ein Objekt Berechtigungen von seinem übergeordneten Objekt, entweder zum Zeitpunkt der Erstellung oder wenn es kopiert oder in seinen übergeordneten Ordner verschoben wird. Die einzige Ausnahme von dieser Regel tritt auf, wenn Sie ein Objekt in einen anderen Ordner auf demselben Volume verschieben. In diesem Fall bleiben die ursprünglichen Berechtigungen erhalten.
Das obige Zitat gilt nur für Objekte, denen EXPLICITLY definierte sec-Berechtigungen erteilt wurden (Vererbung deaktivieren). Wie in meinen Kommentaren erwähnt, geht es darum, die ACL-Einträge so effizient wie möglich zu halten. Betrachten Sie das folgende Beispiel:
Nehmen wir an, Sie haben einen Ordner festgelegt, in dem Benutzer nur Rechte ändern können, um die Erklärung einfach zu halten. Darunter befinden sich Tausende von Dateien, für die keine explizite Berechtigungen festgelegt wurden. Es ist nicht sehr effizient, ACLs für jede Datei zu erstellen, da es sich genau um dieselben Dauerwellen handelt. Daher wird EIN ACL-Eintrag für den Ordner festgelegt. Dieses nächste Bit ist sehr wichtig zu verstehen; Die Dateien selbst haben KEINE ACL-PERMS. Wenn Sie also eine dieser Dateien in einen neuen Ordner auf demselben Volume verschieben, behauptet MS, dass die Dauerwellen damit verschoben werden (wie oben angegeben). Fragen Sie sich das ... wie? Es gab überhaupt keine Dauerwellen in der Datei, über die man sich bewegen konnte. Dies ist tatsächlich falsch und ich habe es gerade getestet, um es zu bestätigen. Angenommen, der Zielordner, in den Sie die Datei verschieben, verfügt über Dauerwellen, damit nur alle Gruppen Rechte ändern können. Da die Datei keine ACL direkt hat, erbt sie die ACL des übergeordneten Ordners. Dies bedeutet, dass die Dauerwellen von Benutzeränderungen (alter Ordner) auf alle Änderungen (neuer Ordner) geändert wurden.
Beachten Sie den Unterschied? Dieses Mal hat das Verschieben einer Datei in einen anderen Ordner auf demselben Volume die Dauerwellen geändert, was laut MS nicht der Fall ist. Habe ich seit 2000 einen Fehler in der MS-Dokumentation gefunden?
Sehen Sie sich nun dasselbe Szenario an, wenn Sie explizite Berechtigungen verwenden. Wenn Sie explizite Berechtigungen für eine Datei in diesem Ordner festlegen (Vererbung deaktiviert), die beispielsweise Benutzern den Lesezugriff verweigert, wird jetzt ein NEUER ACL-Eintrag speziell für diese Datei erstellt. Wenn Sie die Datei an einen neuen Speicherort verschieben, ist ein ACL-Eintrag direkt damit verbunden. In diesem Fall behält das Verschieben einer Datei an einen neuen Speicherort auf demselben Volume ihre Berechtigungen (wie von MS behauptet)!