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)!
Wenn Sie Dateien innerhalb desselben Volumes verschieben , ordnen Sie Ihr Dateisystem traditionell neu . Durch Ändern der Dateiberechtigungen auf der Ebene des Verzeichnisses können Sie diese Datei sperren, sobald der Verschiebevorgang abgeschlossen ist. Dies ist unerwünscht, wenn Sie beispielsweise versehentlich eine Datei auf ein System oder einen Ordner mit besonderen Eigentumsrechten verschoben oder anderweitig geschützt haben. Es gibt keine andere Möglichkeit, den Fehler zu korrigieren, als den Besitz der Datei zu übernehmen (wenn Sie über die Berechtigungen verfügen) oder sich mit einem privilegierten Konto anzumelden. In Anbetracht des normalen täglichen Betriebs eines Computers konnten Sie feststellen, dass Sie keine Kontrolle über Ihr Dateisystem hatten.
Dieses Verhalten tritt häufig bei den meisten (wenn nicht allen) Betriebssystemen auf, die ACL verwenden. Es garantiert den normalen Betrieb des Dateisystems innerhalb eines Volumes durch Benutzer und Anwendungen gleichermaßen.
Umgekehrt geben Sie beim Verschieben von Dateien zwischen Volumes traditionell eine Datei zur Kontrolle durch etwas oder eine andere Person ab. Wie Sie wissen, ist es sinnvoll, dass die Datei dann die Berechtigungen für den Zielordner enthält, wodurch das Ziel die erforderlichen Berechtigungen erhält, um sein eigenes Dateisystem nach eigenem Ermessen neu anzuordnen.
Das ist natürlich nicht immer wünschenswert. Aus diesem Grund können Verschiebungs- und Kopiervorgänge mit speziellen Vererbungsregeln für Berechtigungen definiert werden. Aus dem gleichen Artikel:
Verwenden Sie das Dienstprogramm Xcopy.exe mit dem Schalter / O oder / X, um die Berechtigungen beim Kopieren oder Verschieben von Dateien und Ordnern beizubehalten. Die ursprünglichen Berechtigungen des Objekts werden zu vererbbaren Berechtigungen am neuen Speicherort hinzugefügt.
Verwenden Sie das Dienstprogramm Xcopy.exe mit den Schaltern –O und –X, um die ursprünglichen Berechtigungen eines Objekts zu vererbbaren Berechtigungen hinzuzufügen, wenn Sie ein Objekt kopieren oder verschieben.
quelle
OK Dies ist der wahre Tiefpunkt. Erstens - sprechen wir über einen einzelnen PC oder einen Server? Ich gehe davon aus, dass es sich um einen Server handelt. Also ... als Wintel-Administrator von Unternehmen A erstellen Sie ein Dateisystem auf einem Netzlaufwerk auf Ihrem neuen Server. Sie basieren auf Abteilungen, dh jede Abteilung hat einen Ordner und jeder Ordner hat aufgrund von Vertraulichkeitsproblemen eine eigene eindeutige ACL, wie es wahrscheinlich die Norm ist - ja? Wenn Sie also eine Datei in den Ordner einer anderen Abteilung verschieben möchten, warum um alles in der Welt möchten Sie dann NICHT, dass sie die Dauerwellen ihres neuen Ordners erbt? Was ich meine ist ... warum haben Sie ein auf Berechtigungen basierendes Dateisystem, wenn Sie es nicht verwenden werden? Ich kann Ihnen ein Beispiel aus der Praxis geben, bei dem es wichtig ist, dass verschobene Dateien / Ordner immer die ACL des übergeordneten Ordners erben. Fragen Sie mich einfach.
Verschieben von Dateien innerhalb eines Volumes oder Verschieben von Vol. X nach Vol. Y ... Was ist der wesentliche Unterschied? Sie verschieben den Speicherort einiger Dateien - über verschiedene Volumes hinweg oder nicht, soweit ich sehen kann, in einer Unternehmensumgebung einen kleinen Unterschied. Der wahre Grund, warum einer standardmäßig die Vererbung einschließt und der andere nicht, wurde von Mucker bereits erwähnt - das ist "Effizienz". Durch Ziehen und Ablegen von Dateien innerhalb eines Volumes wird lediglich der Indexeintrag geändert. Die Dateien werden nicht verschoben und ihre ACL-Informationen bleiben allein. Ermöglicht eine einfache Bedienung. Wenn Dateien über Volumes verschoben werden, müssen die Dateien und ihre ACLs jedoch neu definiert werden. Daher ist es sinnvoll, dies ordnungsgemäß zu tun und die Vererbung einzuschließen, da dies keinen vermeidbaren Overhead verursacht.
Ich kann nicht verstehen, warum Microsoft dieses Problem nicht behebt. Wäre es zu schwierig, ein Dialogfeld als Teil des Drag & Drop des Explorers einzuschließen? Etwas wie "Sie haben Dateien an einen Speicherort mit unterschiedlichen Zugriffsrechten verschoben. Möchten Sie die Berechtigungen des neuen übergeordneten Ordners erben? J oder N?"
Grüße, Stonegiant
quelle