AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ordner-Rechte entziehen

Ein Thema von grasshopper · begonnen am 3. Apr 2013 · letzter Beitrag vom 3. Apr 2013
Antwort Antwort
grasshopper

Registriert seit: 3. Apr 2013
2 Beiträge
 
#1

Ordner-Rechte entziehen

  Alt 3. Apr 2013, 11:26
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:
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;
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.

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:
DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [afObjectInheritAce, afContainerInheritAce], [B]GENERIC_ALL[/B], JwWorldSID, false));
dann das hier:
Code:
DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [afObjectInheritAce, afContainerInheritAce], [B]$00000000[/B], JwWorldSID, false));
Aber das funktioniert nicht.

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!

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.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Ordner-Rechte entziehen

  Alt 3. Apr 2013, 12:00
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#3

AW: Ordner-Rechte entziehen

  Alt 3. Apr 2013, 13:28
@grasshopper: Du denkst zu kompliziert.

Grundsätzlich gilt für jeden Benutzer, daß sich seine Berechtigungen summieren, wenn sie nicht verboten werden.
Dem ist nichts hinzuzufügen.

MfG Dalai
  Mit Zitat antworten Zitat
grasshopper

Registriert seit: 3. Apr 2013
2 Beiträge
 
#4

AW: Ordner-Rechte entziehen

  Alt 3. Apr 2013, 14:25
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.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#5

AW: Ordner-Rechte entziehen

  Alt 3. Apr 2013, 14:33
"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

Geändert von Dalai ( 3. Apr 2013 um 15:46 Uhr) Grund: Anregung von p80286
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Ordner-Rechte entziehen

  Alt 3. Apr 2013, 15:17
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.
Und das jetzt bitte in Großschrift und fett!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz