| |
|
|
- 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 | | Ladeanzahl: | | | | Herunterladen |
|
|
| |
|
|
|
| |
|
- 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 |
|
|
| |
|
|
|
| Hallo Christian...
Das sieht hervorragend aus. Noch wichtig: - Wird der Zugriff wirklich verweigert / erlaubt? - Welche Rechte werden im WindowsExplorer angezeigt? Stimmt das überein?
|
|
|
| |
|
|
|
CB | Laut Explorer: Löschen würde verweigert, alles andere ist freigegeben (für Jeder).
Christian |
|
|
| |
|
|
|
CB | Hier noch die Screenshots dazu: |
|
|
| |
|
|
|
| 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) |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
| Hallo Christian...
Das sieht nicht nur hervorragend aus, das sieht spitzenmäßig aus! Wir haben es geschafft! Es funzt! Die Sensation! |
|
|
| |
|
|
|
CB | Freut mich unheimlich, daß sich der Aufwand bezahlt gemacht hat... |
|
|
| |
|
|
|
| Ich sehe Ah schon fleißig anner PCU basteln.
Salve. |
|
|
| |
|
|
|
| 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... |
|
|
| |
|
|
|
| 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... |
|
|
| |
|
|
|
| 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. |
|
|
| |
|
|
|
| Ich werd mich next Woche kurz hinsetzen und mal mittels der Inc nen kleinen opensourceVerwalter bauen, kk?
Salve. |
|
|
| |
|
|