AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Sicherheitseinstellungen von Dateien ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Sicherheitseinstellungen von Dateien ändern

Ein Thema von Tpercon · begonnen am 12. Aug 2003 · letzter Beitrag vom 30. Sep 2007
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#31

Re: Sicherheitseinstellungen von Dateien ändern

  Alt 18. Aug 2003, 09:42
Hi Tpercon,

die Ergebnisse für DACL und SACL hat uns Christian aber schon geliefert.

Gruß oki

PS: Wo wollten wir eigentlich noch mal hin?
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#32

Re: Sicherheitseinstellungen von Dateien ändern

  Alt 18. Aug 2003, 10:41
Die Sicherheitseinstellungen für die gewählte Datei so anzeigen, wie sie z.B. im Explorer angezeigt werden (welcher User darf was...).
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#33

Re: Sicherheitseinstellungen von Dateien ändern

  Alt 18. Aug 2003, 19:43
Moin Zusammen,

um SACL erhalten zu können, muss man das Privileg SE_SECURITY_NAME enabled haben, was bei mir unter W2K nicht standardmässig der Fall ist.
Dazu werden dann GetCurrentProcess, OpenProcessToken, LookupPrivilegeValue und AdjustTokenPriviliges benötigt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#34

Re: Sicherheitseinstellungen von Dateien ändern

  Alt 19. Aug 2003, 08:07
Hi,

erstmal Dank an Cristian. Das hilft mächtig weiter. Mit GetCurrentProcess, OpenProcessToken und AdjustTokenPriviliges hab ich schon mal gearbeitet. Ich schau mal gleich meine Quellen durch wie ich das damals gemacht hab.

Gruß oki
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#35

Re: Sicherheitseinstellungen von Dateien ändern

  Alt 19. Aug 2003, 08:45
Das wäre super!
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#36

Re: Sicherheitseinstellungen von Dateien ändern

  Alt 20. Aug 2003, 10:05
@ Oki: Hast du vielleicht was gefunden?

Vorallem im Bezug auf
  • GetSecurityDescriptorDacl()
  • GetSecurityDescriptorGroup()
  • GetSecurityDescriptorSacl()

Schönen Tag noch
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#37

Re: Sicherheitseinstellungen von Dateien ändern

  Alt 20. Aug 2003, 13:22
Hi,

ich hab folgendes ausprobiert, was auch funzt.

Ich weiß nur nicht wo uns das weiterhilft. Leider hab ich die Aufgabenstellung und deren Sinn immer noch nicht verstanden. Deshalb teste ich im Moment nur das aus was du fragst und arbeite nicht an einer zielorientierten Lösung.

Delphi-Quellcode:
 var
  FiName : String;
  psd : PSECURITY_DESCRIPTOR;
  dwLen : DWORD;
  psdc : SECURITY_DESCRIPTOR_CONTROL;
  dwDummy : DWORD;

  lpbDaclPresent : Bool;
  lpbDaclDefaulted : Bool;
  pDacl : PACL;

  lpbSaclPresent : Bool;
  lpbSaclDefaulted : Bool;
  pSacl : PACL;
begin
  Result := False;
  // if not OpenDialog1.Execute then exit;
  FiName := Edit1.Text + #0;
  // erforderliche Buffergrösse ermitteln
  dwLen := 0;
  psd := nil;
  GetFileSecurity(PChar(FiName),OWNER_SECURITY_INFORMATION,psd,0,dwLen);
  // Security Descriptor auslesen
  psd := AllocMem(dwLen);
  try
    if not GetFileSecurity(PChar(OpenDialog1.FileName),OWNER_SECURITY_INFORMATION,psd,dwLen,dwLen) then begin
      ShowMessage(SysErrorMessage(GetLastError));
      exit;
    end;
    GetSecurityDescriptorControl(psd,psdc,dwDummy);
    Memo1.Lines.Clear;
    if (psdc and SE_DACL_AUTO_INHERITED) = SE_DACL_AUTO_INHERITED then Memo1.Lines.Add('SE_DACL_AUTO_INHERITED');
    if (psdc and SE_DACL_DEFAULTED) = SE_DACL_DEFAULTED then Memo1.Lines.Add('SE_DACL_DEFAULTED');
    if (psdc and SE_DACL_PRESENT) = SE_DACL_PRESENT then Memo1.Lines.Add('SE_DACL_PRESENT');
    if (psdc and SE_DACL_PROTECTED) = SE_DACL_PROTECTED then Memo1.Lines.Add('SE_DACL_PROTECTED');
    if (psdc and SE_GROUP_DEFAULTED) = SE_GROUP_DEFAULTED then Memo1.Lines.Add('SE_GROUP_DEFAULTED');
    if (psdc and SE_OWNER_DEFAULTED) = SE_OWNER_DEFAULTED then Memo1.Lines.Add('SE_OWNER_DEFAULTED');
    if (psdc and SE_SACL_AUTO_INHERITED) = SE_SACL_AUTO_INHERITED then Memo1.Lines.Add('SE_SACL_AUTO_INHERITED');
    if (psdc and SE_SACL_DEFAULTED) = SE_SACL_DEFAULTED then Memo1.Lines.Add('SE_SACL_DEFAULTED');
    if (psdc and SE_SACL_PRESENT) = SE_SACL_PRESENT then Memo1.Lines.Add('SE_SACL_PRESENT');
    if (psdc and SE_SACL_PROTECTED) = SE_SACL_PROTECTED then Memo1.Lines.Add('SE_SACL_PROTECTED');
    if (psdc and SE_SELF_RELATIVE) = SE_SELF_RELATIVE then Memo1.Lines.Add('SE_SELF_RELATIVE');

    pDacl := nil;
    GetSecurityDescriptorDacl(psd, lpbDaclPresent, pDacl,   lpbDaclDefaulted);
    IF lpbDaclPresent then begin
      Memo1.lines.add('DACL-ACL-Count: ' + inttostr(pDacl^.AceCount));
      Memo1.lines.add('DACL-ACL-Size: ' + inttostr(pDacl^.AclSize));
    end else begin
      Memo1.Lines.Add('security descriptor does not contain a discretionary ACL for DACL');
    end;

    pSacl := nil;
    GetSecurityDescriptorSacl(psd, lpbSaclPresent, pSacl,   lpbSaclDefaulted);
    IF lpbSaclPresent then begin
      Memo1.lines.add('SACL-ACL-Count: ' + inttostr(pSacl^.AceCount));
      Memo1.lines.add('SACL-ACL-Size: ' + inttostr(pSacl^.AclSize));
    end else begin
      Memo1.Lines.Add('security descriptor does not contain a discretionary ACL for SACL');
    end;

    Result := True;
  finally
    FreeMem(psd,dwLen);
  end;
Gruß oki
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#38

Re: Sicherheitseinstellungen von Dateien ändern

  Alt 20. Aug 2003, 13:45
Hm, ich bekomme bei jeder Datei security descriptor does not contain a discretionary ACL for DACL bzw. security descriptor does not contain a discretionary ACL for SACL? Das gleiche Problem hatte ich leider auch schon in einer Version von mir.

Man kann für jede Datei die Sicherheitseinstellungen im Explorer ändern. Dies möchte ich durch meine eigene Anwendung ermöglichen. Dafür möchte ich aber erstmal die Infos auslesen, um mich damit vertraut zu machen und alles genau zu verstehen.
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#39

Re: Sicherheitseinstellungen von Dateien ändern

  Alt 20. Aug 2003, 13:56
wir haben genau den Fall für
Zitat:
lpbSaclPresent

... If this parameter is FALSE, the security descriptor does not contain a system ACL, and the remaining output parameters do not receive valid values.
gleichfalls ist pbSaclDefaulted auf True.

Ich verstehe das so, das im SECURITY_DESCRIPTOR_CONTROL das Flag SE_SACL_DEFAULTED gesetzt ist. Was immer uns das auch sagen soll.

Übrigens hab ich immer noch nicht verstanden wo der Unterschied zwischen DACL und SACL besteht.

Gruß oki

PS: positiv ist auf jeden fall, dass die Methoden funzen. GetSecurityDescriptorGroup hab ich mir gespaart, weil genause.
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#40

Re: Sicherheitseinstellungen von Dateien ändern

  Alt 20. Aug 2003, 14:54
OK, soweit klar bzw. unklar.
Nur wir bekommen doch eigentlich ein SE_SELF_RELATIVE anstatt SE_SACL_DEFAULTED zurück?!

Eine Frage zu dem GetSecurityDescriptorGroup und der SID. Wie arbeite ich mit derSID und LookUpAccountName / LookUpAccountSID?

Als nächstes wäre also die Arbeit mit den Funktionen GetAce, GetLengthSid, GetAclInformation dran.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 22:55 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