Italia
Foro

Filesecurity setzen: Quelltext Teil 2

 
- Page 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 File
Hochgeladen:29.05.2005
Downloadcounter98
Download
 
22.05.2005  
 



 
- Page 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 per 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
Dimensione 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 per 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 per Jeder=0
Letzter API-Fehler=122
Länge des SIDs=12
Rückgabe von LookupAccountName per Jeder=1
Letzter API-Fehler=997
Länge des SIDs=12
Bytes per ACL=28
Rückgabe von InitializeAcl=1
Letzter API-Fehler=997
Rückgabe von GetSecurityDescriptorDacl=1
Letzter API-Fehler=997
Rückgabe von IsValidAcl per 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
Dimensione 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 per 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 per 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
Dimensione 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 per 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 per Jeder=0
Letzter API-Fehler=122
Länge des SIDs=12
Rückgabe von LookupAccountName per Jeder=1
Letzter API-Fehler=997
Länge des SIDs=12
Bytes per ACL=48
Rückgabe von InitializeAcl=1
Letzter API-Fehler=997
Rückgabe von GetSecurityDescriptorDacl=1
Letzter API-Fehler=997
Rückgabe von IsValidAcl per 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
Dimensione 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 per 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 per 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 per 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
Dimensione 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 per 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 (File löschen)
Dimensione 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 per 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 File 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 - per
File keine Bedeutung)
Recht im 2. ACE=WRITE_OWNER (Eigentümer ändern)
Rückgabe von LookupAccountName per Administratoren=0
Letzter API-Fehler=122
Länge des SIDs=16
Rückgabe von LookupAccountName per Administratoren=1
Letzter API-Fehler=997
Länge des SIDs=16
Bytes per ACL=72
Rückgabe von InitializeAcl=1
Letzter API-Fehler=997
Rückgabe von GetSecurityDescriptorDacl=1
Letzter API-Fehler=997
Rückgabe von IsValidAcl per 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
Dimensione 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 per den selbsterzeugten DACL=1
Letzter API-Fehler=0
Dimensione 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 per 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 per 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 (per 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 File oder Ordnernamen als String an, per 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 circa 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 File 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 - per File keine Bedeutung)
ACCESS_SYSTEM_SECURITY (Erlaubt den Zugriff auf den SACL)
WRITE_OWNER (Eigentümer ändern)
F_DELETE (File löschen)
 
23.05.2005  
 



 
- Page 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 finora 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 circa die Registry und den Token lernen - besten Dank nochmals per 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 un 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 per Profanprogrammieren Türen offen, die scheinbar in anderen Programmiersprachen unter Windows nur den grande Experten vorbehalten sind, ohne die man aber - wie gesagt - eigentlich gar keine richtigen Mehrbenutzeranwendungen schreiben kann.

Diese PROC bietet überhaupt erst die Möglichkeit (per nicht Experten, wie wir es sind) Datenbankanwendungen per mehrere Benutzer unter WindowsNT/2000/XP zu schreiben, was eigentlich sonst im Prinzip gar nicht possibile 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 per den deutschen Bereich und unsere Programmiersprache zu ändern...
 
26.05.2005  
 



Hallo Profaner...

Das finale Ergebnis ist fertig und è sich als Include seit gestern hier auf dem Server.
Mit dieser Include ist es possibile, jedem User desssen Loginnamen man kennt beliebige Zugriffsrechte auf eine File oder einen Ordner zu erlauben oder auch diese zu verbieten.
Nebenbei kann man diese Zugriffsrechte naturalmente 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 possibile macht ohne weitere Kenntnisse circa 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  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

8.140 Views

Untitledvor 0 min.
RudiB.31.01.2016

Themeninformationen

Dieses Thema hat 3 subscriber:

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


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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