Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
anwenderwiki:scripting:ldapsearch [2020/09/17 05:24] – jrichter | anwenderwiki:scripting:ldapsearch [2020/09/17 05:31] (aktuell) – [LDAP-Abfragen mit Ldapsearch und anderen Tools] jrichter | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | |||
+ | |||
+ | ====== LDAP-Abfragen mit ldapsearch und anderen Tools ====== | ||
+ | |||
+ | Mit '' | ||
+ | |||
+ | Auf dieser Seite wird die grundlegende Verwendung insbesondere mit einem LMN-Server erklärt, es finden sich Beispiele zur Filtern und eine Hilfestellung, | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | Sofern das Tool noch fehlt, kann man es bei debianbasierten Systemen mit folgendem Befehl nachinstallieren: | ||
+ | |||
+ | < | ||
+ | sudo apt install ldap-utils | ||
+ | </ | ||
+ | |||
+ | ===== Grundlegende Parameter ===== | ||
+ | |||
+ | //Achtung, in diesem Abschnitt stehen keine funktionierenden Beispiele, nur Codeschnipsel!// | ||
+ | |||
+ | **Ldap-Server** | ||
+ | |||
+ | Den zu kontaktierenden Ldap-Server gibt man mit der Option '' | ||
+ | |||
+ | < | ||
+ | ldapsearch -H " | ||
+ | ldapsearch -H " | ||
+ | </ | ||
+ | |||
+ | Im ersten Beispiel wird das einfache Ldap-Protokoll über Port 389 verwenden, im zweiten findet die Anfrage verschlüsselt per Ldaps über Port 636 statt. | ||
+ | |||
+ | **Benutzerdaten -- Bind-User** | ||
+ | |||
+ | Je nach Konfiguration kann man den Server auch anonym abfragen (LMN 6.2) oder mit einen Benutzernamen (" | ||
+ | |||
+ | Den Benutzernamen gibt man mit der Option '' | ||
+ | |||
+ | //LMN 6.2// | ||
+ | |||
+ | < | ||
+ | ldapsearch -x -w "" | ||
+ | ldapsearch -x -w " | ||
+ | ldapsearch -x -W -D " | ||
+ | </ | ||
+ | |||
+ | Das erste Beispiel ist eine anonyme Abfrage, beim zweiten Beispiel wird ein normaler Useraccount verwendet und das Passwort direkt angegeben. Im dritten Beispiel wird der Datenbank-Administrator verwendet. Hier wird man nach dem Passwort gefragt -- es steht in der Datei ''/ | ||
+ | |||
+ | //LMN 7// | ||
+ | |||
+ | Bei der LMN 7 kann man den LDAP nicht anonym abfragen. Hier gibt es den " | ||
+ | |||
+ | < | ||
+ | ldapsearch -x -w " | ||
+ | ldapsearch -x -W -D " | ||
+ | </ | ||
+ | |||
+ | Im ersten Beispiel wird das Passwort direkt übergeben, im zweiten wird man nach dem Passwort gefragt. | ||
+ | |||
+ | Es ist nicht zu empfehlen, wie im ersten Beispiel das Passwort im Klartext beim Befehl einzugeben. Stattdessen sollte man mit '' | ||
+ | |||
+ | < | ||
+ | ldapsearch -x -y "/ | ||
+ | </ | ||
+ | |||
+ | Achtung, die Datei darf wirklich nur das Passwort enthalten, auch keinen Zeilenumbruch am Ende! | ||
+ | |||
+ | **Search-Base** | ||
+ | |||
+ | Die LDAP-Datenbank ist wie ein Baum aufgebaut. Die Search-Base gibt an, bei welcher Verzweigung die Suche beginnen soll. So kann man die Suche auf Teilbäume beschränken oder natürlich auch die gesamte Datenbank durchsuchen. | ||
+ | |||
+ | Hier ein paar Beispiele: | ||
+ | |||
+ | < | ||
+ | # Kompletter LDAP-Baum (LMN 6 und 7) | ||
+ | ldapsearch -b " | ||
+ | |||
+ | # Nur Gruppen suchen (LMN 6 - Klassen, Projekte ...) | ||
+ | ldapsearch -b " | ||
+ | |||
+ | # Nur Projekte suchen (LMN 7) | ||
+ | ldapsearch -b " | ||
+ | </ | ||
+ | |||
+ | Die Search-Base für die gesamte Datenbank hängt dabei von der bei der Installation verwendeten Domain ab. Die Beispiele hier beziehen sich auf die Domain " | ||
+ | |||
+ | Bei einer bestehenden Installation kann man die Basis des LDAP-Baumes so herausfinden: | ||
+ | |||
+ | LMN 6: '' | ||
+ | LMN 7: '' | ||
+ | |||
+ | Bei der LMN 7 muss man die Domain noch mit '' | ||
+ | |||
+ | Mit diesen Parametern können wir nun '' | ||
+ | |||
+ | ===== Filter ===== | ||
+ | |||
+ | '' | ||
+ | |||
+ | ==== Suchfilter ==== | ||
+ | |||
+ | Suchfilter werden in Klammern angegeben: | ||
+ | |||
+ | < | ||
+ | ldapsearch ... " | ||
+ | </ | ||
+ | |||
+ | Hier werden nur Objekte gefunden, bei denen die '' | ||
+ | |||
+ | Man kann die folgenden logischen Operatoren verwenden: ''&'' | ||
+ | |||
+ | < | ||
+ | ldapsearch ... " | ||
+ | </ | ||
+ | |||
+ | Nun werden bei der LMN 6 nur noch Lehreraccounts gefunden (Gruppe 10000), die mit " | ||
+ | |||
+ | ==== Ausgabefilter ==== | ||
+ | |||
+ | Um nur einzelne Attribute auszugeben, zählt man sie ganz zuletzt des Befehls auf: | ||
+ | |||
+ | < | ||
+ | ldapsearch ... " | ||
+ | </ | ||
+ | |||
+ | Hier werden von allen Lehrerinnen und Lehrern Name und Login ausgegeben. | ||
+ | |||
+ | ===== Beispiele ===== | ||
+ | |||
+ | Alle Beispiele hier beziehen sich auf die LDAP-Base '' | ||
+ | |||
+ | |||
+ | === LMN 6.2 === | ||
+ | |||
+ | Den gesamten LDAP-Baum ausgeben: | ||
+ | |||
+ | < | ||
+ | |||
+ | Alle Gruppen ausgeben (komplett): | ||
+ | |||
+ | < | ||
+ | |||
+ | Alle Gruppen und ihre Anzahl ausgeben (nur die Namen): | ||
+ | |||
+ | < | ||
+ | |||
+ | Alle User in " | ||
+ | |||
+ | < | ||
+ | |||
+ | Alle Informationen zu einem User ausgeben: | ||
+ | |||
+ | < | ||
+ | ldapsearch -x -w "" | ||
+ | ldapsearch -x -W -H " | ||
+ | </ | ||
+ | |||
+ | Man beachte die unterschiedliche Ausgabe: Bei einer anonymen Abfrage fehlen z. B. die Passwort-Hashes. | ||
+ | |||
+ | === LMN 7 === | ||
+ | |||
+ | Bei der LMN 7 muss man einen Binduser angeben. Der " | ||
+ | |||
+ | Den gesamten LDAP-Baum ausgeben: | ||
+ | |||
+ | < | ||
+ | |||
+ | Alle Klassen ausgeben (komplett): | ||
+ | |||
+ | < | ||
+ | |||
+ | Alle Projekte und ihre Anzahl ausgeben (nur die Namen): | ||
+ | |||
+ | < | ||
+ | |||
+ | Alle SuS und ihre Anzahl ausgeben (diesmal den vollen dn): | ||
+ | |||
+ | < | ||
+ | |||
+ | Alle LuL und ihre Anzahl ausgeben (diesmal den vollen dn): | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ===== Ausgabe dekodieren (LMN 7) ===== | ||
+ | |||
+ | Bei der LMN 7 werden Werte, die Umlaute enthalten oder aus anderen Gründen nicht oder nicht eindeutig auf der Konsole ausgegeben werden können (z. B. Bilder -- es reicht aber auch schon ein führendes Leerzeichen) im Format Base64 kodiert. | ||
+ | |||
+ | Das Skript '' | ||
+ | |||
+ | * Umlaute in Namen und anderen Feldern | ||
+ | * Windows-/ | ||
+ | * Windows-/ | ||
+ | * DNS-Einträge (Feld '' | ||
+ | * Sonstige nicht-darstellbare Felder als HEX-Wert ('' | ||
+ | |||
+ | === Installation === | ||
+ | |||
+ | Nach dem Herunterladen installiert man das Skript wie folgt: | ||
+ | |||
+ | < | ||
+ | unzip decode-ldapsearch.zip | ||
+ | sudo cp decode-ldapsearch / | ||
+ | sudo chmod 0755 / | ||
+ | </ | ||
+ | |||
+ | === Verwendung === | ||
+ | |||
+ | Man verwendet das Skript als Pipe für '' | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ===== Weitere Tools ===== | ||
+ | |||
+ | ==== LMN 6 ==== | ||
+ | |||
+ | Schnell und einfach zu bedienen sind: | ||
+ | |||
+ | < | ||
+ | smbldap-usershow username | ||
+ | smbldap-groupshow gruppenname | ||
+ | </ | ||
+ | |||
+ | |||