Dateisystemberechtigungen beim Kopieren und Verschieben
Wer des Öfteren Projekte im Windows Fileserver Umfeld macht, stolperte sicher schon das ein oder andere Mal über dieses Thema: Es werden die detailliertesten Berechtigungskonzepte ausgearbeitet und implementiert, die User sortieren ihre Daten in die neu erstellte Dateiablage und plötzlich erscheinen seltsame Berechtigungen in den Unterordnern – obwohl doch die Anwender überhaupt keine Berechtigung zum Ändern der ACLs haben …
Grund hierfür ist meist die Art und Weise, wie Microsoft mit den Berechtigungen umgeht, wenn diese mit dem Explorer (!) kopiert oder verschoben werden. Im KB 310316 wird das Verhalten des Explorer bei der Behandlung von Dateioperationen genau beschrieben:
By default, an object inherits permissions from its parent object, either at the time of creation or when it is copied or moved to its parent folder. The only exception to this rule occurs when you move an object to a different folder on the same volume. In this case, the original permissions are retained.
Wenn also Dateien auf dem gleichen Volume verschoben werden, übernimmt Microsoft die Berechtigungen der Quelle und ignoriert die des Zielordners. Dieses Verhalten ist im o.g. KB Artikel für Windows XP beschrieben (und auch die Lösung dafür), gilt aber auch für alle nachfolgenden Betriebssysteme. Allerdings scheint das Verhalten nicht ganz vorhersehbar, denn ich hatte Projekte, in denen ich mit Windows Server 2012 R2 und Windows 7 Clients das Phänomen zuverlässig nachstellen konnte, bei einem anderen Kunden trat es nur sporadisch auf.
Laut KB 310316 kann das Verhalten mit Registry Keys (auf den Clients!) wie folgt verändert werden:
Mit dieser Änderung werden die ACLs der Quelle immer mit in das Ziel übertragen:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer Value name: ForceCopyAclwithFile Data type: DWORD Value data: 1
Und hiermit werden immer die ACLs des Zielordners genutzt:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer Value name: MoveSecurityAttributes Data type: DWORD Value data: 0
Das klappt soweit auch ganz gut, wenn man noch Windows XP einsetzt … alle anderen Versionen ignorieren die Registry Keys leider. Aber auch dafür gibt es eine Lösung: KB 2617058. Es gibt einen Hotfix, der dem Betriebssystem die Beachtung des Registry Keys wieder beibringt.
Ich würde allerdings empfehlen, zuerst einmal das Szenario zu überprüfen, ob das Phänomen in Eurer Umgebung überhaupt auftritt und ob es den geplanten Berechtigungen widerspricht – ich bin kein Fan vom “Patchen auf Verdacht”.
Hallo Marc,
hast Du dieses Problem noch mal weiter verfolgt? Der von Dir angesprochene Fix geht nicht für 2012R2 – die Registry Einträge sind nett wenn sie gesetzt sind, aber wirklich funktionieren tut das ganze bei uns nicht. Wenn mir die Datei als Owner gehört, dann klappt das mit dem ACLs vom neuen Ort zu übernehmen. Wurde die Datei aber von wem anders erstellt (in unserem Fall von einem AiO) ignoriert er die ACLs des neuen Ordners und behält partout die alten. – Mach hingegen das Kopieren und Einfügen ist alles wie erwartet und die Datei bekommt die Rechte des Zielordners.
Ich habe noch folgenden Artikel gefunden, dort wird behauptet es sei ein bekannter Bug und Microsoft arbeitet an einer Lösung (schon seit 2014):
http://marco-difeo.de/2014/07/07/microsoft-move-file-acl-problem/
Hast Du sonst noch weitere Links/ Tipps?
Hallo Timo,
nein das habe ich nicht. Es scheint einfach keinen Fix für neuere Windows Versionen zu geben. Ich habe einige Beiträge im Internet gefunden, in denen sich Admins darüber beschweren, aber keine Lösung von Microsoft dazu. Es scheint aber auf zwei weiter verbreitete Lösungsansätze hinauszulaufen:
Leider scheint es da kaum einen anderen Ansatz zu geben.
Gruß,
Marc