NTFS Berechtigungen beim Verschieben

German support forum

Moderators: white, Hacker, Stefan2

User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

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)
Author of Total Commander
https://www.ghisler.com
kaminfeuer
Junior Member
Junior Member
Posts: 6
Joined: 2009-08-19, 08:58 UTC

Post by *kaminfeuer »

Erst mal vielen Dank, dass Du so engagiert an dem Thema dranbleibst!

Ich kann gerne anbieten, das Verhalten auch nochmal zu testen, wenn Du mir eine entsprechende Version zukommen lässt oder es in einen RC des neuen TC einbaust.

Herzliche Grüße
Kaminfeuer
Duke
Junior Member
Junior Member
Posts: 54
Joined: 2003-11-19, 18:57 UTC

Post by *Duke »

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.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

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
Duke
Junior Member
Junior Member
Posts: 54
Joined: 2003-11-19, 18:57 UTC

Post by *Duke »

kaminfeuer wrote:Ich kann gerne anbieten, das Verhalten auch nochmal zu testen, wenn Du mir eine entsprechende Version zukommen lässt oder es in einen RC des neuen TC einbaust.
@kaminfeuer

Nur Interessehalber, ist das Verhalten aus deiner Sicht im RC2 behoben?
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Würde mich auch interessieren...
Author of Total Commander
https://www.ghisler.com
kaminfeuer
Junior Member
Junior Member
Posts: 6
Joined: 2009-08-19, 08:58 UTC

Post by *kaminfeuer »

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!!!
Joe_Cool
Junior Member
Junior Member
Posts: 10
Joined: 2010-08-18, 00:14 UTC

Post by *Joe_Cool »

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.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

2Joe_Cool
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
Joe_Cool
Junior Member
Junior Member
Posts: 10
Joined: 2010-08-18, 00:14 UTC

Post by *Joe_Cool »

Ah verstehe. Danke für den Hinweis.
werengel
Junior Member
Junior Member
Posts: 8
Joined: 2006-02-06, 09:57 UTC

Post by *werengel »

Muss das Thema leider nochmal reaktivieren.
Bei mir funktioniert es nicht unter Win XP. Trotz XPMoveMethod=2 werden die Rechte der Dateien kopiert statt sie vom Ziel zu übernehmen. Getestet auf 2 Rechnern. Unter Windows 7 funktioniert es.
Hab die Version 7.56a.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

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
werengel
Junior Member
Junior Member
Posts: 8
Joined: 2006-02-06, 09:57 UTC

Post by *werengel »

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)
Post Reply