[Howto] LDAP-Adressbuch (mit Thunderbird)

  • Die Anleitung ist noch nicht vollständig, werde diese bei Gelegenheit nachholen.


    [NAS Typ:] abhängig vom IPKG/Optware
    [Firmware:] Firmware unabhängig
    [Getestet:] ja
    [Sonstige Modifikationen:] Evtl. Start-Script in autorun.sh eintragen

    [erforderliche Software:] IPKG/Optware, OpenLDAP, evtl. zusätzl. LDAP-Clients siehe Link unten


    Ältere Anleitung als Referenz: Pro-Linux
    LDAP-Browser/Editor: ldapadmin
    Thunderbird-Template for ldapadmin


    Die ipkg-Paketliste aktualisieren und openldap installieren:

    Code
    ipkg updateipkg install openldap


    Nun muß erstmal ein Basis-Ordner für die LDAP-Daten festgelegt werden, da LDAP wie ein Zweig bzw. einem Ordner-Struktur aufgebaut ist.
    Als Basis habe ich

    Code
    dc=familienname,dc=local

    genommen, es können aber auch andere Namen genommen werden, nachträgliche Änderungen sind schwierig, daher vorm ersten Spatenstich es gut überlegen.
    Dieser Basis-Ordner taucht später mehrfach in verschiedenen Angaben als "Suffix" auf.


    Dazu braucht man noch einen RootDN, der sozusagen mit dem Root-User im Linux-System zu vergleichen ist.
    Diesen RootDN habe ich direkt unter dem baseDN abgelegt und zwar als

    Code
    cn=admin,dc=familienname,dc=local


    Dem entsprechend muß die /opt/etc/openldap/slapd.conf und
    /opt/etc/openldap/ldap.conf angepaßt werden.
    Beide Angaben brauchen wir später auch für die Konfiguration im Thunderbird.


    /opt/etc/openldap/ldap.conf

    Code
    # LDAP Defaults## See ldap.conf(5) for details# This file should be world readable but not world writable.HOST 192.168.1.2, 127.0.0.1BASE dc=familienname,dc=localport 389uri  ldap://192.168.1.2:389/


    /opt/etc/openldap/sldap.conf

    Code
    include		/opt/etc/openldap/schema/core.schemainclude		/opt/etc/openldap/schema/cosine.schemainclude		/opt/etc/openldap/schema/nis.schemainclude		/opt/etc/openldap/schema/inetorgperson.schemainclude      	/opt/etc/openldap/schema/mozillaAbPersonAlpha.schemapidfile		/opt/var/run/slapd.pidargsfile	/opt/var/run/slapd.args######################################################################## BDB database definitions#######################################################################database	bdb#database	ldbmsuffix		"dc=familienname,dc=local"rootdn		"cn=admin,dc=familienname,dc=local"# Cleartext passwords, especially for the rootdn, should# be avoid.  See slappasswd(8) and slapd.conf(5) for details.# Use of strong authentication encouraged.rootpw		mypassword# The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools.# Mode 700 recommended.directory	/opt/var/openldap-dataloglevel   0## dbcachesize is required only if you use ldbm (DB  Berkeley 3.x)# Indices to maintainindex           cn,sn,uid,displayName           pres,sub,eqindex           uidNumber,gidNumber             eqindex           objectClass                     pres,eqindex           default                         subaccess to attr=userPassword,sambaLMPassword,sambaNTPassword        by dn.exact="cn=admin,dc=familienname,dc=local" write         by anonymous auth         by self write         by * noneaccess  to dn.children="ou=Addressbook,dc=familienname,dc=local"         by *                            read


    /opt/etc/init.d/slapd.sh

    Code
    start() {	echo "Starting openldap service"	# Start daemons	pid=`pidof slapd`	if [ ! -n $pid ]; then		echo "slapd already running"	else		/opt/libexec/slapd		pid=`pidof slapd`		if [ -n $pid ]; then			echo "openldap slapd started"		fi	fi}stop() {	# Stop daemons.	echo "Shutting down slapd: "	pid=`pidof slapd`#  if [ -n $pid ]; then    kill $pid	  echo "slapd stopped"#  fi}case "$1" instart)  start	;;stop)	stop	;;restart)	stop	sleep 1	start	;;*)	echo "Usage: slapd.sh { [start]|stop| } "	exit 1esacexit 0


    Wenn alle Dateien geändert bzw. erstellt wurden,
    kann nun der LDAP-Server mit "/opt/etc/init.d/slapd.sh start" gestartet werden.






    thunderbird.ldif


    Thunderbird-Settings:
    Name: frei zu vergeben
    Server-Adresse: die IP des NAS
    Basis-DN: ou=addressbook,dc=familienname,dc=local
    Port-Nummer: 389
    Bind-DN: cn=admin,dc=familienname,dc=local






    History:
    18.7.2009: "ipkg update" hinzugefügt; samba.schema entfernt (nur für samba + ldap notwendig)


    01.01.2010: mozillaAbPersonAlpha.schema hinzugefügt.
    Ref.:https://wiki.mozilla.org/MailN…_LDAP_Address_Book_Schema
    Quelle.: /viewtopic.php?f=33&t=2068&p=38586&hilit=LDAP#p38586
    Zusatz: eine abweichende Anleitung .

  • Hi,



    ich habe die Beispieldateien aus der Anleitung kopiert und admin durch master ersetzt.

    Zitat

    Wenn alle Dateien geändert bzw. erstellt wurden,
    kann nun der LDAP-Server mit "/opt/etc/init.d/slapd.sh start" gestartet werden.


    Der Start scheitert:

    Code
    [~] # /opt/etc/init.d/slapd.sh startStarting openldap service/opt/etc/init.d/slapd.sh: line 5: [: too many arguments/opt/etc/init.d/slapd.sh: line 10: [: too many arguments[~] #


    Zeilen 5 -10:

    Code
    if [ ! -n $pid ]; then
              echo "slapd already running"
           else
              /opt/libexec/slapd
              pid=`pidof slapd`
              if [ -n $pid ]; then


    Da ich ein Linux DAU :oops: bin, kann ich die Zeilen nicht richtig interpretieren.
    Aber wenn der Parser recht hat, dann müsste es um einen Befehl in der Klammer gehen, also um "-n" und "$pid",einer soll zu viel sein?!


    Wer hilft einem DAU weiter?


    Harry C.

  • Hallo Stefan,


    der Fehler bleibt, ob mit oder ohne Anführungszeichen.


    Ich habe zwar von Linux nicht den Schimmer, aber der Parser meckert, daß in der Klammer mehrere Argumente stehen.
    Die Argumente sind n und ${pid}. Was bedeutet das "-n"?
    $(pid) ist einigermaßen klar: die Prozeß-ID als Variable.
    Und was macht die doppelte if-Abfrage?
    Wenn ich die Abfrage richtig verstanden habe geht es nur um die Ausgabe "openldap läuft bereits" bzw. "openladp wurde gestartet". Das kann ich in der ersten Abfrage erledigen.
    Was macht die Zweite?
    ich steige nicht durch...


    Gruß


    Oliver

  • Die zweite Abfrage gibt zurück, ob der OpenLDAP auch wirklich gestartet ist.
    Bei einem Fehler von OpenLDAP muß nicht unbedingt auch eine Fehlermeldung erscheinen.

  • Hi, der Fehler scheint in der Deklaration der Variablen zu liegen:
    mit

    Code
    {       echo "Starting openldap service"       # Start daemons       pid = pidof slapd           if [ ! -n ${pid} ]; then          echo "slapd already running"       else          /opt/libexec/slapd          pid = pidof slapd          if [ -n ${pid} ]; then             echo "openldap slapd started"          fi       fi    }


    erhalte ich:

    Code
    [~] #  /etc/init.d/sldapd.sh startStarting openldap service13972 13974 13975/etc/init.d/sldapd.sh: line 9: slapd: command not foundopenldap slapd started


    Der Fehler in Zeile 9 kommt zwangsläufig, da
    lpap in /opt/libexec nicht existiert.
    habe ich da was übersehen?


    Was mich wundert ist, das

    Code
    stop() {       # Stop daemons.       echo "Shutting down slapd: "       pid=`pidof slapd`    #  if [ -n $pid ]; then        kill $pid         echo "slapd stopped"    #  fi    }

    funktioniert. Denn hier stören die Hochkommata die beim Start gestört haben nicht :o

    Code
    [~] #  /etc/init.d/sldapd.sh stop
    Shutting down slapd:
    slapd stopped
    [~] #
  • Hallo Qnap-Gemeinde


    nach dem ich ein paar Tage mit dem OpenLDAP-Server inkl. Thunderbirdschema gekämpft habe, wobei ich als Sieger hervorging, möchte ich mein Lösungsweg der Nachwelt hinter lassen.


    Meine Config
    TS-259 Pro+
    FW 3.7.1


    Als Probelm stellte sich raus, dass der Ordner /etc/openldap/schema nach einem Neustart des NAS neu geschrieben wird. Jedenfalls war das Thunderbirdschema immer wieder weg. Das Gleiche passierte als ich die Datei in das Home-Verzeichnis vom Admin kopierte, nach dem Neustart weg.


    Also habe ich einfach einen User namens LDAP angelegt, der nur Rechte auf sein eignes Verzeichnis hat. Dorthin habe ich die Schema-Datei kopiert mit den Rechten rw-r--r--.
    In die Conig-Datei Slapd.conf habe ich den Eintrag "include /share/LDAP/Thunderbird.schema" eingetragen. Nachdem Neustart konnte ich dann meine ldif-Datei einlesen.


    Mit freundlichen Grüßen


    TT-Tom