LDAP für den Hausgebrauch - Die Basis
Folgendes ist für ein Debian Sarge System geschrieben. Ich habe länger darüber nachgedacht, ob ich es nicht Distributions-Unabhängig schreiben sollte, aber wieder verworfen, weil es die Sache unnötig verkompliziert hätte. So wäre die ganze Sache bei SuSE 9.2 vollkommen überflüssig, denn hier wird bereits alles mitgebracht was man so braucht inkl. Vorinstallation eines Ldap-Baums und Samba-Anbindung - man muss nur in Yast lange genug suchen und ein bischen kombinieren. Ich möchte mich auch nicht lange in LDAP-Spezifikas ergehen, wer näheres/spezielleres Wissen möchte sollte sich entweder ein Buch kaufen oder die vielfältige Doku im Internet aufsuchen. Auch der Aufbau der LDIF-Dateien ist mit Absicht recht einfach gehalten, damit nicht Ballast rumgeschleppt wird der nur verwirrt und letztlich nicht benutzt wird.
Der Anfang ist sehr einfach. Mit apt-get install slapd ldap-utils werden der LDAP-Server und die benötigten Utilities installiert. Dazu werden einige Fragen gestellt, welche die spätere Basis für den LDAP-Baum darstellen, man sollte hier also alles getippte doppelt kontrollieren denn Tippfehler nachträglich zu korigieren ist nervig und zudem zeitaufwendig. Begonnen wird mit der Frage nach der lokalen Domäne (siehe Screenshot). Eine TLD (also das .org) kann man machen, muss aber nicht. Wer es ohne macht, muss aber daran denken die hier abgelegt LDIF-Dateien zu ändern. Es folgt der Name der Organisation welches wiederum frei wählbar ist. Abschließend sollte man die Frage nach LDAPv2 mit Ja beantworten, wenn man beabsichtigt das Verzeichnis später als Adressbuch zu nutzen, einige Clients können noch kein LDAP-v3.
Nun ist der Server soweit konfiguriert und man könnte darauf zugreifen - könnte, weil der Baum, bis auf die Daten des Administrators, leer ist. Damit man sich anschauen kann was bis jetzt passiert ist benötigt man einen LDAP-Browser. Ich benutze hierzu im Moment Luma, ein Python-basiertes, mit allerlei nützlichen Plugins ausgestatteten GUI-Tool. Zum Einloggen benötigt mit den Administrativen-Account, welcher bei der Installation automatisch angelegt wurde, in diesen Beispiel heisst er cn=admin,dc=aumund,dc=org. Zum Zugreifen benötigt man ausserdem noch die Basis-DN, welche mit dc=aumund,dc=org benannt ist.
Als nächstes wird das Verzeichnis mit Daten zu gefüllt. Dies erfolgt normalerweise über sog. LDIF-Dateien in denen die benötigte Struktur mit den Objekten und Attributen enthalten sind. Die Grundstruktur des Verzeichnisses ist im Anhang des Artikel erhältlich. Sie trägt den Namen base.ldif, eine normale Textdatei in die man ruhig einmal reinschauen sollte. Importiert wird sie mit:
ldapadd -x -D "cn=admin,dc=aumund,dc=org" -W -f base.ldif
Schaut man nun in den Baum erscheinen dort die Container Group und People, welche später die Benutzerdaten enthalten werden. Das LDIF des Benutzers (die Datei user.ldif im Anhang) sollte man auch eines Blickes würdigen. Hat man dies gemacht, wandert es mit
ldapadd -x -D "cn=admin,dc=aumund,dc=org" -W -f user.ldif
in den LDAP-Baum. Gleiches gilt übrigens für group-ldif:
ldapadd -x -D "cn=admin,dc=aumund,dc=org" -W -f group.ldif
Damit ist das Verzeichniss soweit fertig. Was noch fehlt ist das Passwort des Benutzers. Hier hat man die Wahl es auch via LDIF oder mit dem LDAP-Tool Luma zu setzen. Bei Luma wählt man im Plugin Usermanagement den Benutzer joern aus, klickt auf Passwort ändern, wählt ssha als Hashalgorithmus und gibt das gewünschte Passwort ein. Im Feld Passwort erscheint dann das verschlüsselte Kennwort, welches mit dem Disketten-Symbol neben der Plugin-Auswahl in den LDAP-Baum übernommen wird. Wer es “zu Fuss” erledigen möchte ruft auf der Shell
slappasswd -h {SSHA}
auf ein gibt dort das gewünschte Passwort ein. Anschließend setzt man das Ausgegebene per Copy&Paste in die Datei passwd.ldif hinter das Attribut userPassword: und schiebt dann diese Daten mit
ldapadd -x -D "cn=admin,dc=aumund,dc=org" -W -f passwd.ldif
in die Datenbank. Soweit so gut. Der Baum ist aufgebaut und ein Benutzer mit Passwort versorgt, nun muss noch das Betriebssystem auf diese Informationen zugreifen. Nach
apt-get install libnss-ldap
muss man ein paar Fragen beantworten, wie welchen Server (127.0.0.1) man benutzen möchte, wie der DN (dc=aumund,dc=org) heisst, welche LDAP-Version (v3) benutzt werden soll, ob man sich für eine Datenbank-Anfrage anmelden
soll (Nein) und ob die Datei /etc/libnss-ldap.conf nur vom Besitzer gelesen werden darf (Nein). Schaut man sich nun mit getent passwd/getent group die Benutzer/Gruppen an ist noch nichts zu erkennen. Dazu muss erst /etc/nsswitch.conf angepasst werden, damit sie anschließend so aussieht:
passwd: compat ldap group: compat ldap shadow: compat ldap
Und siehe da, getent zeigt den angelegten Benutzer/Gruppe aus dem LDAP-System mit an. Damit lässt sich aber noch nicht einloggen, denn dazu muss noch pam angepasst werden:
apt-get install libpam-ldap
installiert die nötigen Dateien. Als letztes müssen noch drei Dateien angepasst werden, damit pam auch wirklich auf LDAP zugreift. Zuerst muss die Datei /etc/pam.d/common-auth so angepasst werden, das sie nach den Kommentaren so ausschaut:
auth sufficient pam_ldap.so auth required pam_unix.so nullok_secure use_first_pass
Für /etc/pam.d/common-account gilt, das an erster Stelle (nach den Kommentaren) folgendes eingefügt werden muss:
account sufficient pam_ldap.so
Dies trifft auch auf /etc/pam.d/common-password zu:
password sufficient pam_ldap.so
Fertig. Nun kann man sich mit den im LDAP-Baum liegenden Benutzern anmelden und normal benutzen. Wenn man mehr Nutzer/Gruppen braucht, einfach die user.ldif und group.ldif anpassen und in den Baum importieren.
Man sollte allerdings daran denken, das die Nutzer noch kein Home-Verzeichniss haben, dies lässt sich mit
session required pam_mkhomedir.so skel=/etc/skel umask=0022
in /etc/pam.d/common-session entweder automatisch erledigen oder man mounted es sich via NFS. Wie man das per LDAP und den Automounter erledigt kommt im nächsten Teil.
base.ldif
user.ldif
group.ldif
passwd.ldif
Referenzen:
http://cactuswax.net/docs/ldap.htm
Veröffentlicht am 11.April 2005 | Kommentare: 24 | Artikel 18147mal angeschaut
Verwandte Artikel
2. Kommentar von joern | Datum: 12.April 2005
Danke für das Lob. Von den R
Danke für das Lob. Von den Reads kannst Du mindestens 35 abziehen, die ich gebraucht habe um den Artikel so zu editieren bis er passte. Anfangs hatte ich nur den Rohtext, dann kamen die Text-Hervorhebungen und schlussendlich die Bilder.
3. Kommentar von melle | Datum: 12.April 2005
Oh danke für diesen Artikel
Oh danke für diesen Artikel - sehr interessant und genau für meine Bedürfnisse geschaffen :-)
4. Kommentar von lemming | Datum: 13.April 2005
Wirklich super Artikel. LDAP
Wirklich super Artikel. LDAP unter Linux hat mich interessiert, hatte aber nie die Zeit mich da einzulesen oder gar ein SuSE zu installieren.
5. Kommentar von BetaTeilchen | Datum: 28.Mai 2005
Prima Artikel - Danke !
Ab
Prima Artikel - Danke !
Aber wo finde ich die erwähnten LDIF-Dateien “am Ende des Artikels” ?
6. Kommentar von Patrik Schindler | Datum: 8.September 2005
Wirklich klasse Artikel,
Wirklich klasse Artikel, kurz und knapp, so soll’s sein. Leider kann auch ich die erwähnten Dateien am Ende des Artikels nicht finden.
7. Kommentar von L-Ray | Datum: 3.Oktober 2005
Geniale Anleitung, vielen
Geniale Anleitung, vielen Dank dafür.
8. Kommentar von theM | Datum: 13.Oktober 2005
bin ich blöd blind, oder
bin ich blöd blind, oder vielleicht beides? kann mir jemand verraten, wo ich die anhänge (die ldifs) zu diesem artikel finde?
9. Kommentar von joern | Datum: 13.Oktober 2005
Sorry, ich hatte die
Sorry, ich hatte die Berechtigungen verschwurbelt, Jetzt sollte es wieder gehen.
10. Kommentar von Alex | Datum: 26.Oktober 2005
Zur Info:
Ich musste bei mir
Zur Info:
Ich musste bei mir Root im Ldap im Nachhinein nochmals anlegen. Keine Ahnung ob ich was falsch gemacht habe.
Ausserdem: es wäre gut, das Howto in einen Server und einen Client-Teil aufzusplitten.
PS: gibt es noch Dinge die man für einen Zugriff von anderen Clients einstellen muss? Lokal am Server klappt der Zugriff. An den Clients gibt es nur ein “Permission Denied”.
Gruß
alex
11. Kommentar von joern | Datum: 26.Oktober 2005
Wenn genau bekommst Du diese
Wenn genau bekommst Du diese Meldung?
12. Kommentar von Alex | Datum: 28.Oktober 2005
Hallo nochmal.
Das hat sich
Hallo nochmal.
Das hat sich in der Zwischenzeit erledigt. Es lag nur an einer fehlerhaften DNS-Auflösung.
Jetzt klappt es.
Eins aber:
Wenn ich mit Luma im Schema Usermanagement einen Benutzer anlege, wie kann ich ihm dann die Daten des Addressbuches zuordnen.
Ich sehe (noch) keine Möglichkeit, diese beiden Objekte (?) zu vereinen.
Evtl. liegt hier aber auch ein Verständnisproblem vor :-)
13. Kommentar von Tom | Datum: 22.November 2005
klasse Text, hat mich sehr
klasse Text, hat mich sehr weitzer gebracht, weiter so! ;-)
14. Kommentar von Rabica | Datum: 4.Dezember 2005
Veränderter Link
Link am
Veränderter Link
Link am Ende des Textes (Referenzen) gibt es nicht mehr:
falsch: http://www.solarblue.net/docs/ldap.htm
neu: http://cactuswax.net/docs/ldap.htm
ansonsten guter Text!
15. Kommentar von abzithom | Datum: 7.Januar 2006
Super Artikel
Ich hätte noch eine Frage:
Wenn ich den Ldap server bei mehrern Servern eintrage, damit er die Benutzerverwaltung übernimmt, wie kann ich das einloggen bestimmer user auf bestimme rechner einschränken??
16. Kommentar von knolle | Datum: 31.Januar 2006
Bei LDAP-Server die nicht auf localhost laufen, muss noch eine /etc/libpam-ldap.conf erzeugt werden, analog zur /etc/libnss-ldap.conf. Sinnigerweise ein Softlink, ansonsten meldet der PAM im /var/log/auth.log:
pam_ldap: ldap_simple_bind Can’t contact LDAP server
18. Kommentar von Moritz Lenz | Datum: 3.März 2006
Gut gemacht
Noch eine kleine Anmerkung zu dieser Seite: Wenn man eine etwas größere Schriftart wählt, werden die Codebeispiele auf der rechten Seite abgeschnitten, das ist recht unschön…
19. Kommentar von Bernd Schubert | Datum: 4.März 2006
Vielen Dank für dieses Howto, bin auch gerade dabei mich ins ldap einzuarbeiten.
Bei mir funktioniert nur leider das ldapadd nicht ohne weiteres, bekomme immer
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
Nach etwas Suchen bin ich dann auf die in diesem Link beschriebene Hilfe gestossen
http://www.opensubscriber.com/message/darwin-userlevel@lists.apple.com/2571380.html
und genau das hat bei mir auch funktioniert.
Nun verstehe ich nur noch nicht warum, habe es gerade überprüft, im sid wird das slapd mit –enable-cleartext gebaut. Ziemlich merkwürdig.
20. Kommentar von Bernd Schubert | Datum: 4.März 2006
Um noch genauer zu sein, in der slapd.conf müssen dann die Einträge rootdn und rootpw gesetzt sein, z.B.
rootdn “cn=admin,dc=aumund,dc=org”
rootpw {SSHA}sI/+5skAFT+3+KRYf2FR2o40CKFPJIcI
(dieses Passwort entsprich ‘test’ ;) )
21. Kommentar von PaulePanter | Datum: 10.März 2006
Der Link in den Referenzen hat sich nochmal geändert:
http://wiki.cactuswax.net/doku.php/docs:howto:ldapserversetup
Sonst sehr schön.
22. Kommentar von Olivier | Datum: 4.Dezember 2006
Ph, ich bekommen immer login incorrect wenn ich mich versuche mit den ldap benutzern anzumelden, was kann das problem sein?
23. Kommentar von Moritz Mekelburger | Datum: 22.Februar 2007
Ich wollte nur mal meinen Dank und ein Kompliment an den Autor los werden: Die Texte hier sind sehr interessant und fundiert geschrieben. Ich bin jetzt schon das zweite mal zufällig bei der Recher… - beim googlen auf diese Seite gestoßen und hatte - wie so oft - erst einmal den Inhalt für den ich mich interessierte durchgelesen und habe erst danach auf den Seitentitel geschaut. Da machte es klick und ich dachte mir: “Mensch, hier warst du doch schonmal und da fandst du die Seite auch schon klasse.” Ein kleiner Blick in meine Bookmarks bestätigte das dann auch.
Ich wollte das nur einmal mitteilen.
gute Nacht!
1. Kommentar von neri | Datum: 11.April 2005
Abgesehn davon, dass der Arti
Abgesehn davon, dass der Artikel sehr interessant ist, finde ich es interessant in welch kurzer Zeit da 70+ reads zustande kommen. Kann es sein, dass die Leute das interessant finden?
Gut gemacht :)
-neri