Problem beim Verschieben von Dateien auf NTFS Volume:
– Dateien verschwinden nach dem Verschieben oder
– Zugriffsverweigerung, wenn Nutzer nur im Zielverzeichnis berechtigt ist
Eine ausführliche Lösung mit Beispiel mit Screenshots und ACL Einstellungen
Index
Nach dem Verschieben: Dateien verschwinden / Zugriff verweigert
Viele kennen bereits die Problematik, aber nur wenige verstehen warum sie auftritt:
Es werde Dateien auf einem NTFS-Volume von einer Ordnerstruktur in eine andere verschoben.
Danach kommt es vor, dass
- die Dateien „verschwinden“ bzw.
- Personen, die nur im Zielverzeichnis berechtigt sind die Dateien nicht öffnen können (Zugriff verweigert)
Sehen wir uns das Ganze an einem Beispiel an:
Ausgangslage
- 2 User – User1 und User2
- 2 Ordner – Folder1 und Folder2. Die Ordner liegen auf demselben Volume auf einem Windows Filer (CIFS-Share)
- 2 Berechtigungsgruppen – Group1 und Group2.
- User1 ist Mitglied von beiden Gruppen
- User2 ist nur Mitglied von Group2
- Group1 ist auf Folder1 berechtigt. Group2 ist auf Folder2 berechtigt
- Die Gruppen geben jeweils das Modify-Recht auf dem Ordner
- Der Client ist einer von folgenden: Windows Server 2003, Windows XP, Windows Vista, Windows 7, Windows Server 2008 oder Windows Server 2008 R2
- ABE ist auf dem Filer an! (Kurzinfo ABE, Detaillierte Infos bei Technet)
Verschieben der Datei in die neue Ordnerstruktur
User1 hat File1 erstellt und in Folder1 abgelegt.
User1 möchte nun File1 von Folder1 nach Folder2 verschieben, damit User2 es lesen kann (User2 hat in Folder1 keine Leserechte!).
Sehen wir uns zunächst die ACL von File1 an:
Wie wir sehen hat die Datei die vererbten Rechte von Folder1 (Group1). Soweit so gut.
Verschieben wir nun die Datei von Folder1 nach Folder2:
Sicht der User und File-ACLs nach dem Verschieben
Wie wir sehen, sieht User1 die Datei, aber User2 nicht!
Ein Blick auf die ACL gibt Aufschluss:
Die Datei hat noch immer die „alten“ Rechte, die sie von Folder1 geerbt hat.
Das erklärt warum User2 die Datei nicht sehen kann – Da ABE an ist, sehen Benutzer nur Dateien, die sie zumindest lesen können.
Wäre ABE aus, würde User2 die Datei zwar sehen, aber nicht öffnen können!
Wir wissen nun warum User2 die Datei nicht sieht, aber die Erklärung ist doch etwas dürftig.
Warum wurde die ACL beim verschieben nicht aktualisiert?
Der Grund wird in folgendem kb-Artikel annährend erklärt:
https://support.microsoft.com/kb/310316
Lösung und Anpassung der Berechtigungen
Da wir auf einem Server 2003 arbeiten setzten wir den Registry-Key MoveSecurityAttributes im LocalMachine Hive von unserem Client (2003 Server):
Hinweis: Für Windows Vista, Windows 7, Windows Server 2008 und Windows Server 2008 R2 ist zusätzlich ein Hotfix nötig, damit der Key funktioniert! Dieser ist hier zu finden:
https://support.microsoft.com/kb/2617058
Der kb-Artikel erklärt ebenfalls, dass der User der den Verschiebe-Vorgang auslöst im Ziel (Folder2) das Recht haben muss, Rechte zu verändern („Change Permissions“ Recht). Dieses Recht geben wir dem User ebenfalls:
Versuchen wir unser Glück also aufs Neue. Um sicherzugehen habe wir eine Datei angelegt (File2).
Diese verschieben wir wieder von Folder1 nach Folder2.
Ein Blick auf den Ordner mit User2 zeigt ein vertrautes Bild:
Sehen wir uns die Datei einmal mit User1 an und schauen auf die Effective Permissions:
Tatsächlich scheint unser User das Recht „Change Permissions“ („Berechtigungen Ändern“) zu haben! Warum also können wir die Berechtitungen der Datei nicht ändern? Der kb-Artikel sagt hierzu auch nichts.
Der Grund ist, dass unsere User über einen Share zugreifen, für den sie lediglich das Change Recht haben (nicht FullControl):
Dies reicht grundsätzlich für alle File-System-Aktionen aus und man sollte annehmen, dass es damit getan ist – schließlich ist nicht so einfach ersichtlich was eigentlich in „FullControl“ bei einem Share enthalten ist. Tatsächlich ist aber in dem FullControl Recht über eine Share-Permission auch das ChangePermissions Recht enthalten.
Microsoft bestätigt, dass es unbedenklich ist Anwendern FullControl auf Shares zu geben und die Rechte per NTFS zu limitieren:
https://technet.microsoft.com/en-us/library/cc754178.aspx
Grundsätzlich gilt bei Rechten über Shares immer, dass dass limitierende Recht gilt. In diesem Fall ist der Share limitierend, da uns dort das „Change Permissions“ Recht fehlt.
Die Lösung für unser Problem besteht also aus folgenden 3 Punkten
- MoveSecurityAttributes per Policy auf dem Client in den Local Machine Hive schreiben
- Usern das Recht “Change Permissions” im Scope Files Only auf dem NTFS-Volume geben
- Share Permissions auf FullControl setzen
Zum Beweis geben wir nun unserem User1 direkt auf dem Share FullControl Rechte (nicht auf dem NTFS-Volume).
Anschließend verschieben wir dieselbe Datei noch einmal von Folder1 nach Folder2 – und voilá:
Die Rechte des Zielordners wurden ordnungsgemäß übernommen.
1 Comment
Leave your reply.