Deutsch
Forum

Filesecurity setzen: Quelltext Teil 2

 
- Seite 1 -


Da der andere Thread etwas überlastet ist, gehts hier weiter. Bitte Testergebnisse als Anhang posten.
Hier der aktuelle Quelltext:

34 kB
Kurzbeschreibung: Setzt auf NTFS Festplatten den Security Descriptor einer Datei
Hochgeladen:29.05.2005
Ladeanzahl94
Herunterladen
 
22.05.2005  
 



 
- Seite 1 -



CB
Hallo Andreas!
1.Test auf XP Pro SP1 (ohne Überwachung), mit dieser poste ich Dirs am Abend.
[quote:994d4e3e56]Fehlercode IsValidSid=1
Letzter API Fehler=0
Fehlercode LookupAccountSid=1
Letzter API Fehler=997
Jeder
****PROZEDUR gestartet****
Gewählte Datei=F:IMAGESFotosDigiCamDorli_Schulfoto 2004.tif
Gruppenname/Username=Jeder
Zu Addierende Rechte=...
SYNCHRONIZE FILE_WRITE_EA FILE_READ_EA FILE_READ_DATA FILE_WRITE_DATA
FILE_APPEND_DATA FILE_EXECUTE FILE_READ_ATTRIBUTES FILE_WRITE_ATTRIBUTES
F_DELETE
Letzter API-Fehler=997
Rückgabe von GetVolumeInformation=1
Letzter API-Fehler=997
Laufwerksflags=1110000000011111111
Ausgelesene Partition=NTFS
Zugriff ist einschränkbar
Rückgabe von GetFileSecurity=0
Letzter API-Fehler=122
Erforderliche Länge des Security Descriptor=104
Rückgabe von GetFileSecurity=1
Letzter API-Fehler=0
Rückgabe von IsValidSecurityDescriptor=1
Letzter API-Fehler=0
Rückgabe von GetSecurityDescriptorDacl=1
Letzter API-Fehler=0
Rückgabe von IsValidAcl für den DACL=1
Letzter API-Fehler=0
DACL ist vorhanden!
Rückgabe von GetAclInformation=1
Letzter API-Fehler=0
Anzahl benutzter Bytes in DACL=28
Anzahl freier Bytes in DACL=0
ACEs in DACL=1
Größe des 1.ACEs=20
ACE Typ des 1.ACEs=ACCESS_ALLOWED_ACE_TYPE
Fehlercode IsValidSid=1
Letzter API Fehler=0
Rückgabe von LookupAccountSid=1
Letzter API-Fehler=997
Reset des API-Fehlers wird durchgeführt
Rückgabe von ConvertSidToStringSid=1
Letzter API-Fehler=0
Rückgabe von LocalFree für den String-SID=0
Letzter API-Fehler=0
String-SID des 1. ACEs=S-1-1-0
1. ACE Bezogen auf SID=Jeder
1. ACE Bezogen auf Domainname=
Accessrechte des 1. ACEs=$1F01FF
Recht im 1. ACE=FILE_ALL_ACCESS (Vollzugriff)
Rückgabe von LookupAccountName für Jeder=0
Letzter API-Fehler=122
Länge des SIDs=12
Rückgabe von LookupAccountName für Jeder=1
Letzter API-Fehler=997
Länge des SIDs=12
Bytes für ACL=28
Rückgabe von InitializeAcl=1
Letzter API-Fehler=997
Rückgabe von GetSecurityDescriptorDacl=1
Letzter API-Fehler=997
Rückgabe von IsValidAcl für den DACL=1
Letzter API-Fehler=997
DACL ist vorhanden!
Rückgabe von GetAclInformation=1
Letzter API-Fehler=997
Anzahl benutzter Bytes in DACL=28
Anzahl freier Bytes in DACL=0
ACEs in DACL=1
Größe des 1.ACEs=20
ACE Typ des 1.ACEs=ACCESS_ALLOWED_ACE_TYPE
Vererbung=0
Fehlercode IsValidSid=1
Letzter API Fehler=997
Rückgabe von LookupAccountSid=1
Letzter API-Fehler=997
Reset des API-Fehlers wird durchgeführt
1. ACE Bezogen auf SID=Jeder
Accessrechte des 1. ACEs=$1F01FF
Bei ALLOWED_ACE...
...zu addierende Rechte=$1F01FF
Rückgabe von AddAce an Punkt 0=1
Letzter API-Fehler=0
Rückgabe von IsValidAcl für den selbsterzeugten DACL=1
Letzter API-Fehler=0
Rückgabe von InitializeSecurityDescriptor=1
Letzter API-Fehler=0
Rückgabe von SetSecurityDescriptorDacl=1
Letzter API-Fehler=0
Rückgabe von SetFileSecurity=1
Letzter API-Fehler=0
Fehlercode IsValidSid=1
Letzter API Fehler=0
Fehlercode LookupAccountSid=1
Letzter API Fehler=997
Jeder
****PROZEDUR gestartet****
Gewählte Datei=F:IMAGESFotosDigiCamDorli_Schulfoto 2004.tif
Gruppenname/Username=Jeder
Zu Addierende Rechte=...
F_DELETE
Letzter API-Fehler=997
Rückgabe von GetVolumeInformation=1
Letzter API-Fehler=997
Laufwerksflags=1110000000011111111
Ausgelesene Partition=NTFS
Zugriff ist einschränkbar
Rückgabe von GetFileSecurity=0
Letzter API-Fehler=122
Erforderliche Länge des Security Descriptor=104
Rückgabe von GetFileSecurity=1
Letzter API-Fehler=0
Rückgabe von IsValidSecurityDescriptor=1
Letzter API-Fehler=0
Rückgabe von GetSecurityDescriptorDacl=1
Letzter API-Fehler=0
Rückgabe von IsValidAcl für den DACL=1
Letzter API-Fehler=0
DACL ist vorhanden!
Rückgabe von GetAclInformation=1
Letzter API-Fehler=0
Anzahl benutzter Bytes in DACL=28
Anzahl freier Bytes in DACL=0
ACEs in DACL=1
Größe des 1.ACEs=20
ACE Typ des 1.ACEs=ACCESS_ALLOWED_ACE_TYPE
Fehlercode IsValidSid=1
Letzter API Fehler=0
Rückgabe von LookupAccountSid=1
Letzter API-Fehler=997
Reset des API-Fehlers wird durchgeführt
Rückgabe von ConvertSidToStringSid=1
Letzter API-Fehler=0
Rückgabe von LocalFree für den String-SID=0
Letzter API-Fehler=0
String-SID des 1. ACEs=S-1-1-0
1. ACE Bezogen auf SID=Jeder
1. ACE Bezogen auf Domainname=
Accessrechte des 1. ACEs=$1F01FF
Recht im 1. ACE=FILE_ALL_ACCESS (Vollzugriff)
Rückgabe von LookupAccountName für Jeder=0
Letzter API-Fehler=122
Länge des SIDs=12
Rückgabe von LookupAccountName für Jeder=1
Letzter API-Fehler=997
Länge des SIDs=12
Bytes für ACL=48
Rückgabe von InitializeAcl=1
Letzter API-Fehler=997
Rückgabe von GetSecurityDescriptorDacl=1
Letzter API-Fehler=997
Rückgabe von IsValidAcl für den DACL=1
Letzter API-Fehler=997
DACL ist vorhanden!
Rückgabe von GetAclInformation=1
Letzter API-Fehler=997
Anzahl benutzter Bytes in DACL=28
Anzahl freier Bytes in DACL=0
ACEs in DACL=1
Größe des 1.ACEs=20
ACE Typ des 1.ACEs=ACCESS_ALLOWED_ACE_TYPE
Vererbung=0
Fehlercode IsValidSid=1
Letzter API Fehler=997
Rückgabe von LookupAccountSid=1
Letzter API-Fehler=997
Reset des API-Fehlers wird durchgeführt
1. ACE Bezogen auf SID=Jeder
Accessrechte des 1. ACEs=$1F01FF
Bei ALLOWED_ACE zu addierende Rechte=$1E01FF
Rückgabe von AddAce an Punkt 1=1
Letzter API-Fehler=0
Rückgabe von IsValidAcl für den selbsterzeugten DACL=1
Letzter API-Fehler=0
Bei DENIED_ACE...
...zu addierende Rechte=$10000
Rückgabe von AddAce an Punkt 0=1
Letzter API-Fehler=0
Rückgabe von IsValidAcl für den selbsterzeugten DACL=1
Letzter API-Fehler=0
Rückgabe von InitializeSecurityDescriptor=1
Letzter API-Fehler=0
Rückgabe von SetSecurityDescriptorDacl=1
Letzter API-Fehler=0
Rückgabe von SetFileSecurity=1
Letzter API-Fehler=0
Fehlercode IsValidSid=1
Letzter API Fehler=0
Fehlercode LookupAccountSid=1
Letzter API Fehler=997
Administratoren
****PROZEDUR gestartet****
Gewählte Datei=F:IMAGESFotosDigiCamDorli_Schulfoto 2004.tif
Gruppenname/Username=Administratoren
Zu Addierende Rechte=...
FILE_DELETE_CHILD,READ_CONTROL,ACCESS_SYSTEM_SECURITY,WRITE_OWNER,WRITE_DAC,F_DE
LETE,SYNCHRONIZE,FILE_WRITE_EA,FILE_READ_EA,FILE_READ_DATA,FILE_WRITE_DATA,FILE_
APPEND_DATA,FILE_EXECUTE,FILE_READ_ATTRIBUTES,FILE_WRITE_ATTRIBUTES,F_DELETE
Letzter API-Fehler=997
Rückgabe von GetVolumeInformation=1
Letzter API-Fehler=997
Laufwerksflags=1110000000011111111
Ausgelesene Partition=NTFS
Zugriff ist einschränkbar
Rückgabe von GetFileSecurity=0
Letzter API-Fehler=122
Erforderliche Länge des Security Descriptor=124
Rückgabe von GetFileSecurity=1
Letzter API-Fehler=0
Rückgabe von IsValidSecurityDescriptor=1
Letzter API-Fehler=0
Rückgabe von GetSecurityDescriptorDacl=1
Letzter API-Fehler=0
Rückgabe von IsValidAcl für den DACL=1
Letzter API-Fehler=0
DACL ist vorhanden!
Rückgabe von GetAclInformation=1
Letzter API-Fehler=0
Anzahl benutzter Bytes in DACL=48
Anzahl freier Bytes in DACL=0
ACEs in DACL=2
Größe des 1.ACEs=20
ACE Typ des 1.ACEs=ACCESS_DENIED_ACE_TYPE
Fehlercode IsValidSid=1
Letzter API Fehler=0
Rückgabe von LookupAccountSid=1
Letzter API-Fehler=997
Reset des API-Fehlers wird durchgeführt
Rückgabe von ConvertSidToStringSid=1
Letzter API-Fehler=0
Rückgabe von LocalFree für den String-SID=0
Letzter API-Fehler=0
String-SID des 1. ACEs=S-1-1-0
1. ACE Bezogen auf SID=Jeder
1. ACE Bezogen auf Domainname=
Accessrechte des 1. ACEs=$10000
Recht im 1. ACE=_DELETE (Datei löschen)
Größe des 2.ACEs=20
ACE Typ des 2.ACEs=ACCESS_ALLOWED_ACE_TYPE
Fehlercode IsValidSid=1
Letzter API Fehler=0
Rückgabe von LookupAccountSid=1
Letzter API-Fehler=997
Reset des API-Fehlers wird durchgeführt
Rückgabe von ConvertSidToStringSid=1
Letzter API-Fehler=0
Rückgabe von LocalFree für den String-SID=0
Letzter API-Fehler=0
String-SID des 2. ACEs=S-1-1-0
2. ACE Bezogen auf SID=Jeder
2. ACE Bezogen auf Domainname=
Accessrechte des 2. ACEs=$1E01FF
Recht im 2. ACE=FILE_READ_DATA (Erlaubt Daten aus einem File zu lesen)
Recht im 2. ACE=FILE_WRITE_DATA (Erlaubt Daten zu Scheiben)
Recht im 2. ACE=FILE_APPEND_DATA (Erlaubt Daten anzuhängen)
Recht im 2. ACE=FILE_READ_EA (Erlaubt erweiterte Attibute zu lesen)
Recht im 2. ACE=FILE_WRITE_EA (Erlaubt erweiterte Attribute zu schreiben)
Recht im 2. ACE=FILE_EXECUTE (Erlaubt eine Datei auszuführen)
Recht im 2. ACE=FILE_READ_ATTRIBUTES (Lesen der Fileattribute)
Recht im 2. ACE=FILE_WRITE_ATTRIBUTES (Ändern der Fileattribute)
Recht im 2. ACE=WRITE_DAC (Ändern der DACL Einträge)
Recht im 2. ACE=READ_CONTROL (Lesen der DACL Einträge und Besitzer)
Recht im 2. ACE=SYNCHRONIZE (Erlaubt einem FileHandle auf ein Complitition I/O
zu warten)
Recht im 2. ACE=File_Delete_Child (Erlaubt einen Unterordner zu löschen - für
Dateien keine Bedeutung)
Recht im 2. ACE=WRITE_OWNER (Eigentümer ändern)
Rückgabe von LookupAccountName für Administratoren=0
Letzter API-Fehler=122
Länge des SIDs=16
Rückgabe von LookupAccountName für Administratoren=1
Letzter API-Fehler=997
Länge des SIDs=16
Bytes für ACL=72
Rückgabe von InitializeAcl=1
Letzter API-Fehler=997
Rückgabe von GetSecurityDescriptorDacl=1
Letzter API-Fehler=997
Rückgabe von IsValidAcl für den DACL=1
Letzter API-Fehler=997
DACL ist vorhanden!
Rückgabe von GetAclInformation=1
Letzter API-Fehler=997
Anzahl benutzter Bytes in DACL=48
Anzahl freier Bytes in DACL=0
ACEs in DACL=2
Größe des 1.ACEs=20
ACE Typ des 1.ACEs=ACCESS_DENIED_ACE_TYPE
Vererbung=0
Fehlercode IsValidSid=1
Letzter API Fehler=997
Rückgabe von LookupAccountSid=1
Letzter API-Fehler=997
Reset des API-Fehlers wird durchgeführt
1. ACE Bezogen auf SID=Jeder
Accessrechte des 1. ACEs=$10000
Rückgabe von AddAce an Punkt 0=1
Letzter API-Fehler=0
Rückgabe von IsValidAcl für den selbsterzeugten DACL=1
Letzter API-Fehler=0
Größe des 2.ACEs=20
ACE Typ des 2.ACEs=ACCESS_ALLOWED_ACE_TYPE
Vererbung=0
Fehlercode IsValidSid=1
Letzter API Fehler=0
Rückgabe von LookupAccountSid=1
Letzter API-Fehler=997
Reset des API-Fehlers wird durchgeführt
2. ACE Bezogen auf SID=Jeder
Accessrechte des 2. ACEs=$1E01FF
Rückgabe von AddAce an Punkt 1=1
Letzter API-Fehler=0
Rückgabe von IsValidAcl für den selbsterzeugten DACL=1
Letzter API-Fehler=0
Bei ALLOWED_ACE...
...zu addierende Rechte=$11F01FF
Rückgabe von AddAce an Punkt 2=1
Letzter API-Fehler=0
Rückgabe von IsValidAcl für den selbsterzeugten DACL=1
Letzter API-Fehler=0
Rückgabe von InitializeSecurityDescriptor=1
Letzter API-Fehler=0
Rückgabe von SetSecurityDescriptorDacl=1
Letzter API-Fehler=0
Rückgabe von SetFileSecurity=1
Letzter API-Fehler=0[/quote:994d4e3e56]
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
23.05.2005  
 



Hallo Christian...

Das sieht hervorragend aus.
Noch wichtig:
- Wird der Zugriff wirklich verweigert / erlaubt?
- Welche Rechte werden im WindowsExplorer angezeigt? Stimmt das überein?
 
23.05.2005  
 




CB
Laut Explorer:
Löschen würde verweigert, alles andere ist freigegeben (für Jeder).

Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
23.05.2005  
 




CB
Hier noch die Screenshots dazu:

 
XProfan 8/9.1, Win XP, AMD 64/3200
23.05.2005  
 



Noch einmal zu den Parametern der PROC Set_ACE_IN_DACL:

Der erste Parameter gibt einen Datei oder Ordnernamen als String an, für den man Rechte festlegen will.

Der zweite Parameter ist ein Gruppen oder Username als String. Wenn man jedem Rechten freigeben will, wäre dafür der Gruppenname Jeder zu verwenden. Der der Gruppenname Jeder nur auf deutschen Systemen wirklich Jeder ist, kann man den GRuppennamen von Jeder und von Administratoren über die Proc Get_Group_Name ermitteln.

Der dritte Parameter gibt an, ob Rechte verboten oder erlaubt werden sollen und ist ebenfalls ein String. Hier kann auch angegeben werden, ob der alte DACL gelöscht werden soll.
+ bedeutet Rechte erlauben, - bedeutet Rechte verbieten, 0 bedeutet alten DACL löschen. + und - dürfen nicht zusammen verwendet werden. Wird 0 nicht angegeben, werden die Zugriffsrechte des alten DACL in den neuen übernommen.

Parameter vier gibt die Rechte als String an:
FILE_READ_DATA (Erlaubt Daten aus einem File zu lesen)
FILE_WRITE_DATA (Erlaubt Daten zu Scheiben)
FILE_APPEND_DATA (Erlaubt Daten anzuhängen)
FILE_READ_EA (Erlaubt erweiterte Attibute zu lesen)
FILE_WRITE_EA (Erlaubt erweiterte Attribute zu schreiben)
FILE_EXECUTE (Erlaubt eine Datei auszuführen)
FILE_READ_ATTRIBUTES (Lesen der Fileattribute)
FILE_WRITE_ATTRIBUTES (Ändern der Fileattribute)
RITE_DAC (Ändern der DACL Einträge)
READ_CONTROL (Lesen der DACL Einträge und Besitzer)
SYNCHRONIZE (Erlaubt einem FileHandle auf ein Complitition I/O zu warten)
File_Delete_CHILD (Erlaubt einen Unterordner zu löschen - für Dateien keine Bedeutung)
ACCESS_SYSTEM_SECURITY (Erlaubt den Zugriff auf den SACL)
WRITE_OWNER (Eigentümer ändern)
F_DELETE (Datei löschen)
 
23.05.2005  
 



 
- Seite 2 -


Hallo Christian...

Das sieht nicht nur hervorragend aus, das sieht spitzenmäßig aus!

Wir haben es geschafft! Es funzt! Die Sensation!
 
23.05.2005  
 




CB
Freut mich unheimlich, daß sich der Aufwand bezahlt gemacht hat...
 
XProfan 8/9.1, Win XP, AMD 64/3200
23.05.2005  
 



Ich sehe Ah schon fleißig anner PCU basteln.

Salve.
 
23.05.2005  
 



Hallo Christian...

Und wie sich das gelohnt hat. Das beste daran: Ich habe weltweit in keiner Programmiersprache bislang irgendeinen Quelltext gefunden, der das in dieser Art und Weise regeln konnte! Wer demnächst programmieren will, soll gefälligst Profan lernen!!!

Hallo IF...

Habe leider kein XProfan - deshalb überlasse ich es dir, aus der Proc eine PCU zu machen. Mit der PROC werde ich ein Programm von mir anpassen und danach die Funktionen der PROC in die API Library aufnehmen.
Dann werde ich mich in gleicher Weise um die Registry kümmern - wo stellt man überhaupt da die Zugriffsrechte ein? Regedit32??

PS:
Sogar Roland und Uwe haben sich heute die neuen Funktionen der API Library angesehen. Roland ist jetzt scheinbar täglich hier.
GetTokenInformation und ConverttStringSIDToSID sollte sich jeder Windows2000/XP Nutzer eigentlich einmal angesehen haben. Mit diesen Funktion läßt sich einiges über die Registry und den Token lernen - besten Dank nochmals für deinen Tipp zu GroupMembership, Christian! Du scheints dich wirklich gut in der Registry auszukennen...
 
23.05.2005  
 



So, hab zur Zeit wieder Nachtschicht. Wenn ich damit fertig bin, werde ich die PROC so umschreiben, daß die API-Rückgaben bei Bedarf in eine vorher mit Assign zugewiesene Logdatei geschrieben werden können, aber nicht müssen. Danach wird die Proc hier im passenden Forumsbereich veröffentlicht.

Danach werde ich mich um die Aufnahme der noch fehlenden APIs aus der PROC in die API Library kümmern.

Wenn beides getan ist, stehen für Profanprogrammieren Türen offen, die scheinbar in anderen Programmiersprachen unter Windows nur den großen Experten vorbehalten sind, ohne die man aber - wie gesagt - eigentlich gar keine richtigen Mehrbenutzeranwendungen schreiben kann.

Diese PROC bietet überhaupt erst die Möglichkeit (für nicht Experten, wie wir es sind) Datenbankanwendungen für mehrere Benutzer unter WindowsNT/2000/XP zu schreiben, was eigentlich sonst im Prinzip gar nicht möglich ist, wenn man die Kenntnisse nicht besitzt, die ich hier angewendet habe.

Ich finde es eine Schande, daß Sachen, die eigentlich jeder Anfänger wissen sollte, von Microsoft so schlecht und unzureichend dokumentiert sind.
Ich habe vor, dies für den deutschen Bereich und unsere Programmiersprache zu ändern...
 
26.05.2005  
 



Hallo Profaner...

Das endgültige Ergebnis ist fertig und befindet sich als Include seit gestern hier auf dem Server.
Mit dieser Include ist es möglich, jedem User desssen Loginnamen man kennt beliebige Zugriffsrechte auf eine Datei oder einen Ordner zu erlauben oder auch diese zu verbieten.
Nebenbei kann man diese Zugriffsrechte natürlich nicht nur bestimmten Usern erlauben oder verbieten, sondern auch ganzen Usergruppen. Dabei werden bei Bedarf automatisch die richtigen Gruppennamen der Usergruppen Administratoren und Jeder ermittelt, was es möglich macht ohne weitere Kenntnisse über das System die Beschränkungen jedes Users, der Mitglied dieser Gruppen ist, zu bearbeiten.
 
29.05.2005  
 



Ich werd mich next Woche kurz hinsetzen und mal mittels der Inc nen kleinen opensourceVerwalter bauen, kk?

Salve.
 
29.05.2005  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

8.073 Betrachtungen

Unbenanntvor 0 min.
RudiB.31.01.2016

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

unbekannt (10x)
iF (5x)
CB (4x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie