NTFS Berechtigungen beim Verschieben
Moderators: Hacker, Stefan2, white
- ghisler(Author)
- Site Admin
- Posts: 50639
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Also, leider ist die Sache dann doch nicht so einfach. Wenn man nur GetNamedSecurityInfo mit dem Ordner und anschliessend SetNamedSecurityInfo mit dem verschobenen Object (Datei oder Ordner) aufruft, passiert dasselbe wie im Total Commander: Das Objekt erhält die ACL explizit. Wenn man nun die ACL im Vaterverzeichnis ändert, dann bleibt die des verschobenen Objekts unverändert.
Leider konnte ich trotz stundenlangem Googeln keine Lösung finden, deshalb habe ich selber etwas herumprobiert. Es scheint zu gehen, wenn man eine leere ACL für das verschobene Objekt erzeugt (via InitializeAcl), was "niemand hat Zugriff" bedeutet. Anschliessend setzt man diese ACL mit dem Befehl SetNamedSecurityInfo und Parameter
SecurityInfo=DACL_SECURITY_INFORMATION | UNPROTECTED_DACL_SECURITY_INFORMATION
Macht das Sinn? Laut Microsoft bedeutet
UNPROTECTED_DACL_SECURITY_INFORMATION: The DACL inherits ACEs from the parent object.
Siehe:
http://msdn.microsoft.com/en-us/library/aa379573%28VS.85%29.aspx
Jedenfalls scheint sich TC mit diesen Änderungen wie erhofft zu verhalten. Dazu habe ich folgende Tests gemacht:
1. Neuen Ordner anlegen
2. Alt+Enter, Security-Infos: Deny write access to user xyz
3. Datei in diesen Ordner verschieben -> Kein Schreibzugriff für user xyz, aber Optionen sind ausgegraut (vererbt)
4. Alt+Enter auf Ordner, Security-infos von user xyz entfernen
-> Datei im Ordner darf nun auch von xyz verändert werden (ist bisher nicht so)
Leider konnte ich trotz stundenlangem Googeln keine Lösung finden, deshalb habe ich selber etwas herumprobiert. Es scheint zu gehen, wenn man eine leere ACL für das verschobene Objekt erzeugt (via InitializeAcl), was "niemand hat Zugriff" bedeutet. Anschliessend setzt man diese ACL mit dem Befehl SetNamedSecurityInfo und Parameter
SecurityInfo=DACL_SECURITY_INFORMATION | UNPROTECTED_DACL_SECURITY_INFORMATION
Macht das Sinn? Laut Microsoft bedeutet
UNPROTECTED_DACL_SECURITY_INFORMATION: The DACL inherits ACEs from the parent object.
Siehe:
http://msdn.microsoft.com/en-us/library/aa379573%28VS.85%29.aspx
Jedenfalls scheint sich TC mit diesen Änderungen wie erhofft zu verhalten. Dazu habe ich folgende Tests gemacht:
1. Neuen Ordner anlegen
2. Alt+Enter, Security-Infos: Deny write access to user xyz
3. Datei in diesen Ordner verschieben -> Kein Schreibzugriff für user xyz, aber Optionen sind ausgegraut (vererbt)
4. Alt+Enter auf Ordner, Security-infos von user xyz entfernen
-> Datei im Ordner darf nun auch von xyz verändert werden (ist bisher nicht so)
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
-
- Junior Member
- Posts: 6
- Joined: 2009-08-19, 08:58 UTC
Bitte das Verhalten auch unter Vista/7 testen, da Microsoft da wohl etwas bei den Rechtevererbung gegenüber XP geändert hat:
http://support.microsoft.com/kb/320246/en-us
Ob das unter dem Link beschriebene auch für den TC zutrifft, kann ich nicht einschätzen.
http://support.microsoft.com/kb/320246/en-us
Ob das unter dem Link beschriebene auch für den TC zutrifft, kann ich nicht einschätzen.
- ghisler(Author)
- Site Admin
- Posts: 50639
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Am Dateisystem scheint sich nichts geändert zu haben, doch hatte offenbar der Windows-Explorer beim Verschieben dasselbe Problem wie TC...
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
- ghisler(Author)
- Site Admin
- Posts: 50639
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
-
- Junior Member
- Posts: 6
- Joined: 2009-08-19, 08:58 UTC
Hallo zusammen,
sorry, dass ich mich nicht mehr gemeldet habe - ich hatte trotz Antwortbenachrichtigung Eure Antworten nicht wahrgenommen und das Thema dann erst mal vergessen ...
Habe gerade mit der Version 7.50a getestet - extra auch nochmal auf XP (bin inzwischen auf Win7 umgestiegen) und der Fehler ist aus meiner Sicht behoben.
Mit der 7.55 habe ich noch nicht getestet, habe heute erst mitbekommen, dass es die gibt ...
Vielen Dank!!!
sorry, dass ich mich nicht mehr gemeldet habe - ich hatte trotz Antwortbenachrichtigung Eure Antworten nicht wahrgenommen und das Thema dann erst mal vergessen ...
Habe gerade mit der Version 7.50a getestet - extra auch nochmal auf XP (bin inzwischen auf Win7 umgestiegen) und der Fehler ist aus meiner Sicht behoben.
Mit der 7.55 habe ich noch nicht getestet, habe heute erst mitbekommen, dass es die gibt ...
Vielen Dank!!!
Hallo,
also in Win7 funktioniert es nicht so wie im Explorer. Außer man fügt XPMoveMethod=2 in die INI ein. Dann scheint beim Verschieben alles vererbt zu werden. Bei allen anderen Einstellungen sieht man gleich, daß etwas nicht passt am Schild-Overlay-Icon an den Dateien.
Nur so als Rückmeldung.
Danke.
also in Win7 funktioniert es nicht so wie im Explorer. Außer man fügt XPMoveMethod=2 in die INI ein. Dann scheint beim Verschieben alles vererbt zu werden. Bei allen anderen Einstellungen sieht man gleich, daß etwas nicht passt am Schild-Overlay-Icon an den Dateien.
Nur so als Rückmeldung.
Danke.
- ghisler(Author)
- Site Admin
- Posts: 50639
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
2Joe_Cool
Das stimmt, aber wegen der teils langen Wartezeiten beim Verschieben von grossen Verzeichnissen ist XPMoveMethod=2 nicht die Standardeinstellung.
Das stimmt, aber wegen der teils langen Wartezeiten beim Verschieben von grossen Verzeichnissen ist XPMoveMethod=2 nicht die Standardeinstellung.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
- ghisler(Author)
- Site Admin
- Posts: 50639
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Das scheint an den unterschiedlichen Vererbungsregeln unter XP und 7 zu liegen. Ich habe das im Debugger angeschaut - da ist das Flag SE_DACL_PROTECTED gesetzt. In diesem Fall kopiert TC die Permissions nicht vom neuen Vaterverzeichnis.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Ich muss also meinen XP-Usern erklären, dass sie nicht moven dürfen sondern erst kopieren und dann löschen.
Wäre aber keine TotalCommander würdige - sprich perfekte - Lösung !
Wie wäre folgender Lösungsvorschlag:
Es gibt ja schon das Flag "Kopiere NTFS-Permissions" beim Verschieben. Nur wenn dies angewählt ist, wird verschoben ansonsten erst kopiert und dann gelöscht. Hiermit wäre das Flag XPMoveMethod überflüssig. Schön wäre noch, wenn der letzte Zustand vom Flag gespeichert wird.
Gruß,
Werner (überzeugter User der 1. Stunde)
Wäre aber keine TotalCommander würdige - sprich perfekte - Lösung !
Wie wäre folgender Lösungsvorschlag:
Es gibt ja schon das Flag "Kopiere NTFS-Permissions" beim Verschieben. Nur wenn dies angewählt ist, wird verschoben ansonsten erst kopiert und dann gelöscht. Hiermit wäre das Flag XPMoveMethod überflüssig. Schön wäre noch, wenn der letzte Zustand vom Flag gespeichert wird.
Gruß,
Werner (überzeugter User der 1. Stunde)