![]() |
Ordner-Rechte entziehen
Hi!
Ich arbeite für meine Firma gerade an einem selbstgemachten Installer. Dort habe ich mit der Jedi WSCL einem Ordner (und Unterordner und -Dateien) alle Rechte für "Jeden" gegeben. Das sieht (als Test-Funktion) so aus:
Code:
Jedoch besteht bei mir die Befürchtung, dass die Rechte der anderen Benutzer einen höheren Stellenwert haben, und so zum Beispiel ein anderer Nutzer trotzdem nicht schreibend darauf zugreifen kann.
procedure TfrmMain.Button1Click(Sender: TObject);
var UserToken : TJwSecurityToken; SD : TJwSecurityDescriptor; FileObject : TJwSecureFileObject; Owner : TJwSecurityId; DACL : TJwDAccessControlList; begin if DirectoryExists('D:\test2') then begin JwInitWellKnownSIDs; UserToken := TJwSecurityToken.CreateTokenEffective(MAXIMUM_ALLOWED); Owner := UserToken.GetTokenOwner; try FileObject := TJwSecureFileObject.Create('D:\test2'); DACL := FileObject.DACL; DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [afObjectInheritAce, afContainerInheritAce], GENERIC_ALL, JwWorldSID, false)); FileObject.SetDACL(DACL); finally FileObject.Free; Owner.Free; UserToken.Free; end; end; end; Deswegen sollen jetzt alle Rechte für alle anderen Benutzer weg. Allerdings scheitert es bei mir schon beim Entziehen der Rechte. Ich habe versucht, beim Erstellen des DACL's die AccessMask durch eine leere zu erstzen, also statt:
Code:
dann das hier:
DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [afObjectInheritAce, afContainerInheritAce], [B]GENERIC_ALL[/B], JwWorldSID, false));
Code:
Aber das funktioniert nicht. :(
DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [afObjectInheritAce, afContainerInheritAce], [B]$00000000[/B], JwWorldSID, false));
In der JWSCL habe ich nichts gefunden. Nur die Klasse TJwDiscretionaryAccessControlEntryDeny (statt TJwDiscretionaryAccessControlEntryAllow), allerdings verweigert das dann die Rechte, anstatt sie nur zu entziehen. Kann mir jemand helfen? Danke!:-D PS: Über die Sinnhaftigkeit vom Geben aller Rechte brauchen wir nicht zu diskutieren. Ist vielleicht nicht die Beste Möglichkeit, aber in unserem Anwendungsfall zumindest akzeptabel. :wink: |
AW: Ordner-Rechte entziehen
Okay wir wollen jetzt nicht diskutieren....
Wenn Du alle Rechte an jeden vergeben hast, dann mußt Du nur aufpassen, daß es keine deny-Rechte gibt, dann ist der Käse gegessen. Grundsätzlich gilt für jeden Benutzer, daß sich seine Berechtigungen summieren, wenn sie nicht verboten werden. Es soll ja Adminstratoren geben, die einen wilden Mix aus Berechtigungen und Verboten generieren, die haben wohl nichts anderes zu tun. Unter Umständen mußt Du auch die Berechtigungen der darüber liegenden Verzeichnisse ändern. Und Vererbung könnte auch ein Thema sein. Gruß K-H |
AW: Ordner-Rechte entziehen
@grasshopper: Du denkst zu kompliziert.
Zitat:
MfG Dalai |
AW: Ordner-Rechte entziehen
Seid ihr euch sicher, dass das funktioniert?
Angenommen, wir haben einen Ordner, wo "Jeder" alle Rechte hat, und ein Benutzer nur Lese-Rechte. Will der Benutzer nun schreibend auf den Ordner zugreifen, geht das nicht. (korrigiert mich bitte, falls ich hier falsch liege..) Das soll geändert werden, indem alle Rechte für den Benutzer entfernt werden, und somit die Rechte von "Jeder" übernommen wird. |
AW: Ordner-Rechte entziehen
"Jeder" ist ein Pseudobenutzer (ein sogenannter "Well Known SID"), der für wirklich alle Benutzer gilt*. Stell dir das vor wie eine Benutzergruppe. Hat die Benutzergruppe "Büro" auf ein Verzeichnis keine Rechte, die Gruppe "Produktion" aber schon und ist der Benutzer "Willi" in beiden Gruppen vertreten: Was meinst du, darf Willi? Richtig, er hat Rechte auf das Verzeichnis, weil er in "Produktion" ist (natürlich unter der von p80286 genanntenn Voraussetzung, dass weder für eine der Gruppen noch Willi selbst die Rechte auf "verweigern" gestellt sind).
*) Deshalb sollte man hiermit auch ganz vorsichtig sein und von "Vollzugriff" für diesen Benutzer weiten Abstand nehmen, denn Vollzugriff schließt das Anpassen von Zugriffsrechten mit ein. MfG Dalai |
AW: Ordner-Rechte entziehen
Zitat:
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz