AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [GELÖST] JwSCL Berechtigungen ersetzen
Thema durchsuchen
Ansicht
Themen-Optionen

[GELÖST] JwSCL Berechtigungen ersetzen

Ein Thema von Schorschi5566 · begonnen am 26. Jul 2012 · letzter Beitrag vom 26. Jul 2012
Antwort Antwort
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

[GELÖST] JwSCL Berechtigungen ersetzen

  Alt 26. Jul 2012, 07:35
Hallo DPler,

ich muss gerade eine große Anzahl von Verzeichnissen und Dateien mit neuen Berechtigungen "versorgen". Dazu möchte ich die JwSCL verwenden, was ansatzweise auch schon funktioniert.

Problem: Einige Dateien in der Verzeichnisstruktur haben explizite Berechtigungen, die ich ersetzen müsste. Allerdings möchte ich das nicht für jede Datei einzeln machen sondern über Vererbung der Berechtigungen aus einem übergeordneten Verzeichnis. Würde funktionieren, wenn die Vererbung der Rechte dieser speziellen Dateien nicht entfernt worden wäre.

Beim Setzen der Rechte über den Explorer gibt es die schöne Option "Alle Berechtigungen für untergeordnete Objekte durch vererbbare Berechtigungen von diesem Objekt ersetzen". Genau das brauche ich für die JwSCL.

Weiß jemand, wie man das der JwSCL klar macht?


Viele Grüße,
Uwe

P.S.:

Meine bisherigen (erfolglosen) Versuche basieren in etwa auf diesem Code aus den Beispielen zur JwSCL:
Delphi-Quellcode:
  if not DirectoryExists(Directory) then
    exit;
  try
    JwInitWellKnownSIDs;

    UserToken := TJwSecurityToken.CreateTokenEffective(MAXIMUM_ALLOWED);
    Owner := UserToken.GetTokenOwner;
    User := TJwSecurityId.Create(_DOMAIN_MACHINE, Group); // 'Technische_Mitarbeiter'
    try
      FileObject := TJwSecureFileObject.Create(Directory);
      try

        //Make me owner if we cant access DACL
        if not FileObject.AccessCheck(WRITE_DAC)// and
           {For example purpose only.
            We don't have to check the owner because Accesscheck does it.
           }

          { not FileObject.Owner.EqualSid(Owner)} then
        begin
          //try to become owner
          JwEnablePrivilege(SE_TAKE_OWNERSHIP_NAME, pst_Enable);
          FileObject.Owner := Owner;
        end;

        DACL := FileObject.DACL;
        if ClearList then
          DACL.Clear;

        // Problem: AceFlags, Right und ProtState haben keinen Einfluss auf Dateien/Verzeichnisse deren Vererbung entfernt wurde!
        DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, AceFlags, Rights, User, false));
        FileObject.SetDACL(DACL, ProtState);

      finally
        FileObject.Free;
      end;

    finally
      Owner.Free;
      UserToken.Free;
      User.Free;
    end;
  except
    On E: Exception do
      TB.Msg(E.Message, clRed);
  end;
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks

Geändert von Schorschi5566 (26. Jul 2012 um 17:25 Uhr)
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: JwSCL Berechtigungen ersetzen

  Alt 26. Jul 2012, 17:25
Hat sich erledigt.

Ich habe es erst noch mit TreeResetNamedSecurityInfo versucht, was aber nicht funktioniert hat. Mit TreeFileObjectSetNamedSecurityInfo und dem Parameter tstReset scheint es aber zu klappen. Setzt einen ganzen Tree auf die übergebene DACL.
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks
  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 06:14 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