LDAP ist das "Lightweight Directory Access Protocol" - ein Protokoll zum Zugriff auf einen VerzeichnisDienst.
Unter Linux ist OpenLDAP die übliche Implementierung. Auf freenode (IRC) findet man u.u. in #ldap{en} hilfe.
Inhalt
Inhaltsverzeichnis
1. Übersicht (von Jakub Piotrowski)
Heutige Rechner-Infrastrukturen werden immer umfangreicher und somit komplizierter. Nicht nur im Internet verlieren sich die Informationen, die unstrukturiert ins Web gestellt werden. Auch in Unternehmensnetzen drohen Informationen verloren zu gehen, da sie entweder nicht mehr aufgefunden werden oder niemand mehr weiß, daß sie existieren. Fragen wie: "Welches ist der nächstgelegene Drucker?" oder "Wie lautet die Email-Adresse des Projektleiters?" möchten einfach und schnell beantwortet werden. Zeit für ein entsprechendes Auskunftssystem!
Grundlagen zu x.500:
1.1. Allgemeines
Die Anforderung ist alles andere als neu. Notwendige Informationen müssen für einen schnellen und leichten Zugriff katalogisiert werden. Was nützen mir dutzende Handwerker in der Stadt, wenn ich keinen finde? Seit langem existiert (NIS) von Sun Microsystems, ist aber unsicher.
Um solche Ressourcen schnell und sicher finden, verwalten und nutzen zu können, wird ein Verzeichnis benötigt, in dem alle relevanten Informationen gehalten werden. Mehrere solcher Verzeichnisdienste existieren bereits: Novells NDS, Microsofts NTDS, Banyans StreetTalk oder OSI's X.500.
1.2. Geschichte
X.500 wurde 1988 von der CCITT spezifiziert als "eine Menge offener Systeme, die gemeinsam eine Datenbank halten, in der Informationen über Objekte der realen Welt abgelegt sind". Die CCITT spezifiziert im wesentlichen drei Protokolle (Siehe auch Abb.1 ):
- DAP (Directory Access Protocol), das zum Zugriff auf die Informationen dient
- DSP (Directory Service Protocol), mit dem die Kommunikation zwischen Servern durchgeführt wird
- DISP (Directory Information Shadowing Protocol)
Allerdings setzt X.500 auf einem vollständigen ISO/OSI-Stack auf, was einen durchschlagenden Erfolg unmöglich machte.
X.500 kann als vollständig bezeichnet werden: Nichts, was nicht in ihm gespeichert werden könnte. Das Verzeichnis stellt eine Objektdatenbank dar. Zu speichernde Informationen werden in Objektklassen beschrieben: Attributnamen, Typen und deren Wertebereich. Wesentliche Nachteile sind der hohe Implementationsaufwand und der "schwergewichtige" Zugriff. Die Kommunikation zwischen Client und Server erzeugt eine recht hohe Netzlast, die einer allgegenwärtigen Nutzung hinderlich ist. LDAP schlägt eine Brücke.
1.3. Was ist LDAP?
Die erste Implementation von LDAPv1( Lightweight Directory Access Protocol ) wurde an der Universität von Michigan im Juli 1993 entwickelt.
Im Jahr 1995 wurde von Yeong, Howes und Kille an der Universität von Michigan LDAPv2 spezifiziert, um "einen Teil der Last des Verzeichniszugriffs vom Client zu nehmen und die Verbreitung von Verzeichnisdiensten zu vergrößern".
LDAP bietet einen vollen Verzeichniszugriff über einen TCP/IP-Stack und vereinfacht so den Zugriff auf ein X.500-Verzeichnis. Es wurde nur ein Teil der DAP-Funktionen übernommen, allerdings reichen die vorhandenen vollständig aus, um den Rest zu emulieren.
1.4. Weiterlesen kann man hier:
http://www.informatik.uni-bremen.de/grp/unitel/referat/ldap/ldap.html
englischsprachige FAQ: http://www.openldap.org/faq/
deutscher Artikel im LinuxMagazin (Link aus obiger FAQ): http://www.linux-magazin.de/Artikel/ausgabe/2001/05/openldap/openldap.html
- Ultimative Nachschlagewerke zum Thema LDAP sind die entsprechenden RFCs 2251 bis 2256.
2. Fragen
- Was versteht man unter einem Schema?
- das ist die Datendefinition (welche Objektklassen gibt es, welche Attribute gibt es, und welche Objektklassen enthalten welche Attribute)
- Was sind DNs?
- DN ist die Abkürzung für "Distiguished Name". Dies ist eine Suchfolge, über die ein Eintrag im LDAP-Verzeichnis eindeutig gefunden werden kann.
- Kennt jemand Links, die für Anfänger hilfreich sind?
http://www.openldap.org/doc/ leider englisch, aber ansonsten recht verständlich
2.1. Warum LDAP
und nicht PAM?
Ist es nicht möglich, dass alle meine Dienste (wie z.B. Samba) nur auf PAM zugreifen und ich dann LDAP nur für posixAccount einrichten muss?
Wenn ich mehrere verschiedene Dienste habe, die sowohl PAM- als auch LDAP-Authentifizierung zulassen und einige, die nur PAM zulassen, ist es doch wohl konsistenter, wenn ich alle über PAM laufen lasse und dann nur die PAM-Konfiguration bearbeite, um das zu konfigurieren (Die Idee hinter PAM ist doch eben diese Einheitlichkeit). Oder hat es irgendeinen Sinn, manche Dienste direkt auf LDAP zugreifen zu lassen?
Viele Programme legen im LDAP neben dem Passwort (das ist ja das Geringste) noch andere Informationen ab. Bei Samba gibt es beispielsweise die Objektklasse sambaAccount, die verschiedene Daten bezüglich der PDC-Funktionen enthält (Loginskript u.ä.). -- BennySiegert 2002-07-25 09:46:34
PAM und LDAP haben teilweise ähnliche Ansätze, deswegen kommt es zu Überschneidungen, siehe auch Benutzerverwaltung mit LDAP.
PAM bietet nur Zugriff auf die posixAccount Daten, manche Dienste können aber von zusätzlichen Attributen profitieren, z.B. kann Samba das NT-Passwort benutzen, PureFtpd kann Einstellungen zu FTP rausfinden (Ratio,Bandbreite,Quotas) u.s.w. Außerdem müssen Accounts dann nicht zwingend Systemaccounts sein.
Ich gehe z.B. so vor, dass PAM zwar LDAP für die Überprüfung des Accounts benutzt, aber zur Passwortprüfung nur /etc/shadow, dadurch sind alle LDAP Accounts (die die Objektklasse posixAccount haben) auch Systemaccounts, ein Login über PAM ist aber nicht möglich (sondern nur direkt über LDAP)