Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
| anwenderwiki:scripting:ldapsearch [2020/09/17 05:27] – [Ausgabe dekodieren (LMN 7)] 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 | ||
| + | </ | ||
| + | |||
| + | |||