Hallo,
Vordefiniert\Administratoren
Vordefiniert\Benutzer
NT-AUTORITÄT\SYSTEMIch frage mittels LDAP die Benutzergruppen von Usern ab.
Mein Filter sieht so aus:
(&(objectClass=user)(objectCategory=person)(cn=%s))Alles wunderbar, doch wie ordne ich die Benutzergruppen den Gruppen zu, die ich durch Win32::FileSecurity bekommen habe?
Ich hab zum Beispiel als Benutzergruppe von LDAP folgendes bekommen:
"Domänen-Admins".
Drei Dinge dazu:
1. Relevant für Windows ist nur die SID des Benutzer / der Gruppe - das ist eine sehr lange, eindeutige Kennung, die beim Anlegen derselben vergeben wird. Das heißt: Du willst eigentlich SIDs vergleichen, nicht irgendwelche Namen (weil die irreführend sein können). Die SIDs der Gruppen und Benutzer stehen auch irgendwo im LDAP (frag mich aber bitte nicht nach dem genauen Schema, ich bin kein AD-Experte; gib Dir halt mal im Zweifel alle Attribute zu einem LDAP-Objekt aus und such sie Dir dort heraus).
2. Gruppen können unter Windows auch "Mitglieder" anderer Gruppen sein. Wenn ein Rechner in eine Domäne hinzugefügt wird unter Windows, wird die Domänen-Gruppe "Domain Admins" automatisch zur lokalen Gruppe "Administratoren" hinzugefügt; damit haben Domain Admins automatisch Admin-Rechte auf allen Rechnern der Domäne.
3. Lokale Benutzer und Gruppen (wie "Administratoren") stehen nicht im LDAP, weil sie nicht Teil der Domäne sind. Du müsstest dazu irgendwie auf die lokale Benutzerdatenbank unter Windows zugreifen. Wie, kann ich Dir leider nicht sagen, ich kenne mich da nicht so extrem gut aus.
Um also zu überprüfen, ob ein Benutzer Rechte auf eine Datei / ein Verzeichnis hat, musst Du rekursiv alle Gruppenmitgliedschaften auflösen (d.h. erst einmal alle Gruppen zu einem Benutzer heraussuchen, dann zu jeder Gruppe alle Gruppen und dann zu diesen wieder alle weiteren Gruppen bis irgendwann keine Ergebnisse mehr da sind). Danach suchst Du Dir zu allen Gruppen denen der User direkt oder indirekt angehört die SID heraus und vergleichst diese mit den ACL-Einträgen der Datei / des Verzeichnisses. Wenn's einen Treffer gibt, ist Zugriff möglich.
Als zusätzlicher Hinweis vielleicht noch, dass Windows - zumindest wenn ich mich richtig erinnere - auch negative ACLs kennt, d.h. man in den ACLs auch zusätzliche Rechte definieren kann "der darf nicht". Das müsstest Du vermutlich auch berücksichtigen - außer ihr nutzt solche Berechtigungen pauschal nicht.
Viele Grüße,
Christian