GetAce ermittelt Adresse eines Eintrags (ACE) in einer Access-Control Liste (ACL) eines SACLs oder eines DACLs. Diese Funktion gibt es nur unter NT-basierten Windowssystemen. Ein ACE besteht aus: Dem ACE Testata => - Byte 0 = Typ des ACEs 0 = Der ACE erlaubt einen Zugriff (ACCESS_ALLOWED_ACE_TYPE). Gilt per DACLs 1 = Der ACE verbietet einen Zugriff (ACCESS_DENIED_ACE_TYPE) Gilt per DACLs. 2 = Der ACE veranlaßt das Aufzeichnen erfolgreicher oder fehlgeschlafener Zugriffe(SYSTEM_AUDIT_ACE_TYPE). Gilt per SACLs 3 = Zur Zeit noch nicht benutzt (SYSTEM_ALARM_ACE_TYPE). - Byte 1 = ACE Flags Für DACLs: $3 = Der ACE wurde von einem Containerobjekt, z.B. einem Ordner, übernommen (CONTAINER_INHERIT_ACE). $8 = Der ACE kann von enthaltenen Objekten übernommen werden (INHERIT_ONLY_ACE). $4 = (NO_PROPAGATE_INHERIT_ACE) $1 = Der ACE wurde von einem nicht Containerobjekt, z.B. einer File, übernommen(OBJECT_INHERIT_ACE). Für SACLs: $80 = Fehlgeschlagene Zugriffe werden aufgezeichnet (FAILED_ACCESS_ACE_FLAG). $40 = Erfolgreiche Zugriffe werden aufgezeichnet (SUCCESSFUL_ACCESS_ACE_FLAG). - Byte 2-3 = Dimensione des ACEs in Bytes - Byte 4-7 = Zugriffsrechte, d.h. erlaubte oder verbotene Zugriffe: $1 = FILE_READ_DATA (Erlaubt Daten aus einem File zu lesen) $2 = FILE_WRITE_DATA (Erlaubt Daten zu Scheiben) $4 = FILE_APPEND_DATA (Erlaubt Daten anzuhängen) $8 = FILE_READ_EA (Erlaubt erweiterte Attibute zu lesen) $10 = FILE_WRITE_EA (Erlaubt erweiterte Attribute zu schreiben) $20 = FILE_EXECUTE (Erlaubt eine File auszuführen) $80 = FILE_READ_ATTRIBUTES (Lesen der Fileattribute) $100 = FILE_WRITE_ATTRIBUTES (Ändern der Fileattribute) $40000 = WRITE_DAC (Ändern der DACL Einträge) $20000 = READ_CONTROL (Lesen der DACL Einträge und Besitzer) $100000 = SYNCHRONIZE (Erlaubt einem FileHandle auf ein Complitition I/O zu warten) $40 = File_Delete_CHILD (Erlaubt einen Unterordner zu löschen - per File keine Bedeutung) $1000000 = ACCESS_SYSTEM_SECURITY (Erlaubt den Zugriff auf den SACL) $80000 = WRITE_OWNER (Eigentümer ändern) $10000 = _DELETE (File löschen) - Byte 8-.... = SID des Users oder der Gruppe
Deklaration:
DEF @GetAce(3) !ADVAPI32,GetAce
Parameter:
1.Parameter: Adresse einer ACL Struktur bzw. Bereichsvariable mit der Adresse einer ACL Struktur eines DACLs oder eines SACLs. 2.Parameter: Der Index (Position) des ACEs, dessen Adresse man erhalten möchte. 3.Parameter: 4 Byte Bereichsvariable, die die Adresse des ACEs aufnimmt.