Upline: Infos & Dokus Administration Linux

OpenLDAP - Fehler und Problemlösungen


  1. Vorwort
  2. Dies soll keine "komplette" Dokumentation zum OpenLDAP darstellen sondern lediglich eine kleine Hilfe für jederman sein, dem evtl. ähnliche Fehler bei der Installation und Konfiguration des OpenLDAP begegnen. Bitte beachtet auch, daß es hier um eine Installation unter Debian Woody 3.0 geht! RPM-basierte Installationen funktionieren bekanntlich anders, jedoch sollte man aus den folgenden Beschreibungen auch für diese ein paar Infos ziehen können.

  3. Datenbankproblem
  4. Davon ausgehend, daß es gelegentlich durch ein Mißgeschick oder beim Herumexperimentieren auch mal vorkommen kann, daß man die Datenbank mit totalem Datenmüll füllt oder zerstört etc., stieß ich auf die Fragestellung, wie ich die LDAP-Datenbank neu anlegen kann.

    Problemlösung

    Das Löschen und Neuanlegen der LDAP-Datenbank stellt kein besonderes Problem dar. Einziger Knackpunkt sind die Inhalte, von denen es hoffentlich auch eine Fassung als ldif gibt. Der bedachte Admin sollte über die entsprechenden Dateien verfügen. Die "Standard"-Befehle, um das Problem zu lösen:
    # /etc/init.d/slapd stop
    # rm -r /var/lib/ldap/*
    # /etc/init.d/slapd start
    # slapadd -f /etc/ldap/slapd.conf -l /etc/ldap/ldif/initial.ldif
    Jetzt müssen nur noch die restlichen Daten per slapadd eingespielt werden ...



  5. Installationsproblem
  6. Bei der Installation von OpenLDAP 2.x unter Debian Woody per „apt-get install sdapd“ kam bei mir die Fehlermeldung „Unterprozess post-installation script gab den Fehlerwert 1 zurück“. Daher sah ich mich gezwungen, eine kleine Auflistung aller möglichen wichtigen Dateien anzufertigen, um gut vorbereitet an die Fehlersuche gehen zu können. Diese Dateien findet man am Ende dieser kleinen "Problemlösungsgeschichte".

    Problemlösung

    Als ersten Versuch, dem Problem beizukommen führte ich ein "apt-get remove slapd" aus. Hierbei bleiben jedoch alle Einstellungen im System und die Konfigurationsdateien erhalten, so daß ein "apt-get install slapd" anschließend wieder zur gleichen Fehlermeldung führt. Da auch ein "dpkg-reconfigure slapd" mit dem Kommentar abgetan wird, daß Einstellungen nur bei der Erstinstallation vorgenommen werden können, nahm ich mir jetzt die Datei "/var/lib/dpkg/info/slapd.postinst" vor, und fügte vor dem "exit 1" ein paar Zeilen ein, in denen ich per echo die Variablen $dn, $admin, $method, $top, $key, $value und $class ausgeben. Da nahezu alle Variablen den gleichen Inhalt hatten (proteino.local) und $class leer war, war der Abbruch nicht weiter verwunderlich und ich wußte jetzt zumindest, an welcher Stelle ich den Fehler verursacht hatte. Bei der Erstinstallation wird man gefragt, was man für eine Struktur anlegen möchte, ich wählte den letzten Punkt und gab meine lokale Domain proteino.local ein. Ich gehe davon aus, daß hier die LDAP-Schreibweise als kompletter Distinguished Name gefragt war, daß stand nur leider nicht in dem Menü ;o) Mit dieser Idee ist man der Lösung des Problems schon sehr nahe, doch erstmal noch ein kleiner Tip für Probierfreudige: Ein Löschen der Konfigurations- und Schemadateien unter "/etc/ldap" kann ich nicht empfehlen, da ein anschließendes "apt-get install slapd" diese nicht wiederherstellt und man die Dateien dann per "dpkg -X /var/cache/apt/archives/<slapd_Version> /tmp" aus dem Debianpaket selbst wieder entpacken muß. Des weiteren bleiben die (fehlerhaften) Einstellungen erhalten - ein Teil davon steht in der slapd.conf und der Rest - mhh, keine Ahnung. Aus der Idee mit dem fehlerhaften dn und der ohnehin nötigen Neuerstellung der "/etc/ldap/slapd.conf" las ich mir dann mal ein paar Zeilen der Originaldokumentation von OpenLDAP.org durch und paßte die "suffix"-Zeile entsprechend an. Weiterhin sollte man natürlich die Zeilen rootdn und rootpw nicht vergessen, sonst hat man keinen Zugriff auf die Datenbank. Ein anschließendes "apt-get install slapd" brachte dann nur noch die Fehlermeldung, daß die Datei "/etc/exim/exim.conf" nicht gefunden werden konnte. Mit "dpkg-reconfigure exim", der Wahl der lokalen Zustellung (Punkt 4) und der Beantwortung von ein paar weiteren kleinen Abfragen war das Problem schnell behoben.
    Siehe da, der slapd lief jetzt problemlos ...

  7. Debian dpkg-Sripte von OpenLDAP
  8. /var/lib/dpkg/info/slapd.conffiles
    /etc/init.d/slapd
    /etc/ldap/schema/corba.schema
    /etc/ldap/schema/core.schema
    /etc/ldap/schema/cosine.schema
    /etc/ldap/schema/inetorgperson.schema
    /etc/ldap/schema/java.schema
    /etc/ldap/schema/krb5-kdc.schema
    /etc/ldap/schema/misc.schema
    /etc/ldap/schema/nis.schema
    /etc/ldap/schema/openldap.schema
    
    /var/lib/dpkg/info/slapd.config
    #!/usr/bin/perl
    # Bugger, we need to do some things like generate password hashes that
    # we can't do from a shell without adding extra dependencies
    
    use Debconf::Client::ConfModule ':all';
    version("2.0");
    
    $slapdconf        = "/etc/ldap/slapd.conf";
    
    ########################################################################
    # Utility stuff
    
    sub GenRandom {
            local ($len) = @_;
            local ($char, $data, @chars);
            @chars=split(//, "abcdefghijklmnopqrstuvwxyzaABCDEFGHIJKLMNOPQRSTUVWXYZA01234567890");
    
            open(RD, "</dev/urandom") or die "Failed to open random source";
            $data="";
            while ($len--) {
                    die "Failed to read random data" if (read(RD, $char, 1)!=1);
                    $data.=$chars[ord($char)%($#chars+1)];
            }
    
            close(RD);
            return $data;
    }
    
    ########################################################################
    # Initialize the database using a user supplied LDIF file
    
    sub InitializeFromLdif() {
            local($file, $ok);
    
            $ok=0;
            while ($ok!=30) {
                    beginblock;
                    $ok=(input("medium", "slapd/ldif_file"))[0];
                    input("medium", "slapd/internal/dn");
                    input("medium", "slapd/internal/admin");
                    endblock;
                    go;
                    $file=get("slapd/ldif_file");
                    if ($ok!=30 and not -f $file) {
                            fset("slapd/ldif_noexist", "seen", "false");
                            subst("slapd/ldif_noexist", "ldif", $file);
                            input("medium", "slapd/ldif_noexist");
                            go;
                    } else {
                            $ok=30;
                    }
            }
    }
    
    
    ########################################################################
    # Initialize the database using user input
    
    sub InitializeFromInput() {
            local($type,$domain,$dn,$admin,$ret);
    
            input("medium", "slapd/suffix_type");
            go;
            $type=get("slapd/suffix_type");
    
            if ($type eq "domain or host") {
                    if (fget("slapd/domain", "seen") eq "false") {
                            chomp($domain=`hostname -f`);
                            $domain=~s/[^.]+\.(.*)/\1/;
                            set("slapd/domain", $domain);
                    }
                    input("medium", "slapd/domain");
                    go;
                    $dn="dc=" . join(",dc=", split(/\./, get("slapd/domain")));
                    $admin="cn=admin,$dn";
            } elsif ($type eq "location") {
                    beginblock;
                    input("medium", "shared/locale/countrycode");
                    input("medium", "shared/organization");
                    endblock;
                    go;
                    $dn=sprintf("o=%s,c=%s",
                            (get("shared/organization"))[1],
                            (get("shared/locale/countrycode"))[1]);
                    $admin="cn=admin,$dn";
            } else {
                    input("medium", "slapd/custom_suffix");
                    go;
                    $dn=get("slapd/custom_suffix");
            }
            set("slapd/internal/dn", $dn);
            set("slapd/internal/admin", $admin);
    
            if (get("slapd/internal/adminpw") eq "") {
                    beginblock;
                    $ret=input("critical", "slapd/password1");
                    input("critical", "slapd/password2");
                    endblock;
                    go;
    
                    $pw1=get("slapd/password1");
                    $pw2=get("slapd/password2");
    
                    while ($ret!=30 and $pw1 ne $pw2) {
                            fset("slapd/password_mismatch", "seen", "false");
                            fset("slapd/password1", "seen", "false");
                            fset("slapd/password2", "seen", "false");
    
                            beginblock;
                            input("critical", "slapd/password_mismatch");
                            $ret=input("critical", "slapd/password1");
                            input("critical", "slapd/password2");
                            endblock;
                            go;
    
                            $pw1=get("slapd/password1");
                            $pw2=get("slapd/password2");
                    }
    
                    set("slapd/password1", "");
                    set("slapd/password2", "");
    
                    if ($pw1 eq "") {
                            $pw1=GenRandom(8);
                            fset("slapd/no_password", "seen", "false");
                            subst("slapd/no_password", "password", $pw1);
                            input("critical", "slapd/no_password");
                            go;
                    }
    
                    $pw1="{CRYPT}" . crypt($pw1, GenRandom(2));
                    set("slapd/internal/adminpw", $pw1);
            }
    }
    
    ########################################################################
    # Configure replication via slurp
    #
    
    sub InitializeSlurp() {
            local ($do);
    
            input("medium", "slapd/replicate");
            go;
    
            $do=get("slapd/replicate");
    
            return if ($do ne "true");
    
            beginblock;
            input("medium", "slapd/slurpd/host");
            input("low", "slapd/slurpd/port");
            input("medium", "slapd/slurpd/binddn");
            input("medium", "slapd/slurpd/credentials");
            endblock;
            go;
    }
    
    ########################################################################
    # Main loop
    
    if (-f $slapdconf) {
            subst("slapd/conf_exists", "conf", $slapdconf);
            input("low", "slapd/conf_exists");
            go;
            exit 0;
    }
    
    title("OpenLDAP configuration");
    input("medium", "slapd/fill_method");
    go;
    
    $tst=get("slapd/fill_method");
    if ($tst eq "auto") {
            InitializeFromInput();
    } else {
            InitializeFromLdif();
    }
    
    InitializeSlurp();
    stop;
    /var/lib/dpkg/info/slapd.list
    /.
    /var
    /var/lib
    /var/lib/ldap
    /var/spool
    /var/spool/slurpd
    /etc
    /etc/ldap
    /etc/ldap/schema
    /etc/ldap/schema/corba.schema
    /etc/ldap/schema/core.schema
    /etc/ldap/schema/cosine.schema
    /etc/ldap/schema/inetorgperson.schema
    /etc/ldap/schema/java.schema
    /etc/ldap/schema/krb5-kdc.schema
    /etc/ldap/schema/misc.schema
    /etc/ldap/schema/nis.schema
    /etc/ldap/schema/openldap.schema
    /etc/init.d
    /etc/init.d/slapd
    /usr
    /usr/sbin
    /usr/sbin/slapd
    /usr/sbin/slapadd
    /usr/sbin/slapcat
    /usr/sbin/slapindex
    /usr/sbin/slappasswd
    /usr/sbin/slurpd
    /usr/share
    /usr/share/man
    /usr/share/man/man8
    /usr/share/man/man8/slapcat.8.gz
    /usr/share/man/man8/slapindex.8.gz
    /usr/share/man/man8/slappasswd.8.gz
    /usr/share/man/man8/slurpd.8.gz
    /usr/share/man/man8/slapd.8.gz
    /usr/share/man/man8/slapadd.8.gz
    /usr/share/man/man5
    /usr/share/man/man5/slapd.replog.5.gz
    /usr/share/man/man5/ldif.5.gz
    /usr/share/man/man5/slapd.conf.5.gz
    /usr/share/doc
    /usr/share/doc/slapd
    /usr/share/doc/slapd/slapd.conf
    /usr/share/doc/slapd/copyright
    /usr/share/doc/slapd/changelog.Debian.gz
    
    /var/lib/dpkg/info/slapd.postinst
    #!/bin/sh
    
    pkg=slapd
    
    set -e
    
    update_doclink() {
            if [ -d /usr/doc -a ! -e /usr/doc/$pkg -a -d /usr/share/doc/$pkg ] ; then
                    ln -s ../share/doc/$pkg /usr/doc/$pkg
            fi
    }
    
    
    if [ "$1" = "configure" -o "$1" = "abort-upgrade" ] ; then
            update_doclink
    fi
    
    if [ -f /etc/ldap/slapd.conf -a \( "$1" != "configure" -o -n "$2" \) ] ; then
            pf=$(sed -ne 's/^pidfile[[:space:]]\+\(.\+\)/\1/p' /etc/ldap/slapd.conf)
            if [ -z "$pf" ] ; then
                    pf="/var/run/slapd.pid"
            fi
            start-stop-daemon --stop --quiet --oknodo --pidfile "$pf"
            /etc/init.d/slapd start
            exit 0
    fi
    
    # Load debconf
    . /usr/share/debconf/confmodule
    
    if [ -f /etc/ldap/slapd.conf ] ; then
            if [ -z "$2" ] ; then
                    db_input slapd_conf_exists || true
                    db_go
            fi
            exit 0
    fi
    
    db_get slapd/internal/dn ; dn="$RET"
    db_get slapd/internal/admin ; admin="$RET"
    db_get slapd/fill_method ; method="$RET"
    
    top=$(echo $dn | sed 's/,.*//')
    key=$(echo $top | sed 's/=.*//')
    value=$(echo $top | sed "s/$key=//")
    
    if [ "$key" = "dc" ] ; then
            class="dcObject"
    elif [ "$key" = "ou" ] ; then
            class="organizationalUnit"
    elif [ "$key" = "c" ] ; then
            class="country"
    elif [ "$key" = "o" ] ; then
            class="organization"
    elif [ "$key" = "cn" ] ; then
            class="organizationalRole"
    else
            db_input slapd/unknown_class || true
            db_go
            exit 1
    fi
    
    sed -e "s/@SUFFIX@/$dn/g" -e "s/@ADMIN@/$admin/" \
            /usr/share/doc/slapd/slapd.conf > /etc/ldap/slapd.conf
    chmod 644 /etc/ldap/slapd.conf
    
    tmp=$(tempfile)
    
    if [ "$method" = "ldif" ] ; then
            db_get slapd/ldif_file ; ldif="$RET"
    else
            db_get slapd/internal/adminpw ; password="$RET"
            ldif="$tmp"
            cat < "$ldif"
    dn: $dn
    objectClass: $class
    $key: $value
    
    dn: cn=admin,$dn
    objectClass: organizationalRole
    objectClass: simpleSecurityObject
    cn: admin
    description: LDAP administrator
    userPassword: $password
    
    dn: ou=People,$dn
    objectClass: organizationalUnit
    ou: People
    
    dn: ou=Roaming,$dn
    objectClass: organizationalUnit
    ou: Roaming
    EOF
    fi
    
    slapadd -l $ldif 1>&2
    
    
    db_get slapd/replicate
    if [ "$RET" = "true" ] ; then
            db_get slapd/slurpd/host ; host="$RET"
            db_get slapd/slurpd/port ; port="$RET"
            db_get slapd/slurpd/binddn ; binddn="$RET"
            db_get slapd/slurpd/credentials ; cred="$RET"
            db_set slapd/slurpd/credentials ""
    
            cat < "$tmp"
    
    # Set up replication for entire database to $host. Please note that this
    # does not use a secure connection!
    replica host=$host:$port bindmethod=simple binddn=$binddn credentials=$cred
    
    EOF
    
            tmp2=$(tempfile)
            sed -e "/^loglevel/r$tmp" /etc/ldap/slapd.conf > "$tmp2"
            cat "$tmp2" >/etc/ldap/slapd.conf
            rm -f "$tmp2"
    fi
    
    db_set slapd/internal/adminpw ""
    db_stop
    
    rm -f "$tmp"
    
    update-rc.d slapd defaults 19 80 > /dev/null
    /etc/init.d/slapd start
    
    exit 0
    
    /var/lib/dpkg/info/slapd.postrm
    #!/bin/sh
    
    set -e
    
    purge_debconf() {
            if [ -e /usr/share/debconf/confmodule ] ; then
                    . /usr/share/debconf/confmodule
                    db_purge
            fi
    }
    
    
    purge_init() {
            update-rc.d slapd remove >/dev/null
    }
    
    
    if [ "$1" = "purge" ] ; then
            purge_init
            purge_debconf "$@"
            rm -f /etc/ldap/slapd.conf
            rm -rf /var/lib/ldap
    fi
    
    exit 0
    
    /var/lib/dpkg/info/slapd.prerm
    #!/bin/sh
    
    pkg=slapd
    
    set -e
    
    update_doclink() {
            if [ -L /usr/doc/$pkg  ] ; then
                    rm -f /usr/doc/$pkg
            fi
    
    }
    
    
    stop_all() {
            if [ -x /etc/init.d/slapd ] ; then
                    /etc/init.d/slapd stop
            fi
    }
    
    
    stop_slurp() {
            if grep -q '^replica' /etc/ldap/slapd.conf > /dev/null 2>&1 ; then
                    start-stop-daemon --stop --quiet --exec /usr/sbin/slurpd
            fi
    }
    
    
    if [ "$1" = "remove" ] ; then
            update_doclink
            stop_all
    elif [ "$1" = "upgrade" ] ; then
            stop_slurp
    fi
    
    exit 0
    
    /var/lib/dpkg/info/slapd.templates
    Template: slapd/slurpd/host
    Type: string
    Description: LDAP server:
     The fully qualified hostname of the remote LDAP server to replicate data
     to.
    Description-de: LDAP-Server:
     Bitte den vollständigen Rechnernamen des anderen LDAP-Servers angeben, an
     den die Änderungen weitergegeben werden sollen.
    
    Template: slapd/internal/admin
    Type: string
    Description: Admin entry
     The admin entry is the entry in the directory which has full read and
     write access.
    Description-de: Admin-Eintrag
     Der Admin-Eintrag ist der Eintrag im Verzeichnis, der volle Lese- und
     Schreibberechtigung hat.
    
    Template: slapd/no_password
    Type: note
    Description: LDAP admin password
     The slapd package generated a random password to the admin entry in your
     new LDAP directory. The password is: ${password}.
    Description-de: LDAP Admin-Passwort
     Das slapd-Paket hat ein neues zufälliges Passwort für den Admin-Eintrag
     Ihrer LDAP-Datenbank erzeugt. Das Passwort ist: ${password}.
    
    Template: slapd/fill_method
    Type: select
    Choices: auto, ldif
    Choices-de: automatisch, ldif-datei
    Default: auto
    Description: Directory initialization method:
     The LDAP directory can be initialized either via an existing LDIF
     datafile, or automatically using information you supply.
    Description-de: Initialisierungsmethode für die Datenbank:
     Das LDAP-Verzeichnis kann entweder mit einer bestehenden LDIF Datendatei,
     oder automatisch mit von Ihnen eingegebenen Informationen gefüllt werden.
    
    Template: slapd/internal/dn
    Type: string
    Description: Directory DN
    Description-de: Verzeichnis-DN
    
    Template: slapd/suffix_type
    Type: select
    Choices: domain or host, location, custom
    Choices-de: Domain oder Host, Ort, Spezifisch
    Default: domain or host
    Description: Directory suffix style:
     The LDAP directory suffix is the root of your LDAP database. You can
     select one of three possible suffix styles:
     .
     Domain or host style uses the fully qualified hostname of your machine as
     the basis.
     .
     Location uses country and organization name.
     .
     Custom allows you to speficy your own root root using whatever suffix you
     want.
    Description-de: Verzeichnis Suffix-Stil:
     Das LDAP-Verzeichnis-Suffix ist die Wurzel ihrer LDAP-Datenbank. Sie
     können einen der folgenden drei Stile dafür auswählen:
     .
     Der »Domain oder Host«-Stil verwendet den vollständigen Rechnernamen ihres
     Computer als Basis. (dc=domain,dc=tld-Stil)
     .
     Der »Ort«-Stil verwendet das Land und den Organisationsnamen. (o=,c=)
     .
     Mit »Spezifisch« können sie als Wurzel ein selbstgewähltes Suffix angeben.
    
    Template: slapd/ldif_noexist
    Type: note
    Description: ${ldif} does not exist
     Please supply an exiting file in ldif format is needed to initialize the
     directory.
    Description-de: ${ldif} existiert nicht
     Bitte geben Sie den Namen einer existierenden Datei im ldif-Format ein, um
     das Verzeichnis zu initialisieren.
    
    Template: slapd/slurpd/binddn
    Type: string
    Description: bind DN:
     This is the DN used to bind to the remote LDAP server. It needs to have
     full write access to the data being replicated.
    Description-de: Verbindungs-DN
     Dies ist die DN, die verwendet wird, um auf den anderen LDAP-Server
     zuzugreifen. Sie braucht volle Schreibrechte um die Änderungen weitergeben
     zu können.
    
    Template: slapd/password_mismatch
    Type: note
    Description: passwords do not match
     You need to enter the admin password twice. Please note that differences
     such as uppercase/lowercase and added whitespace matter.
    Description-de: Passwörter stimmen nicht überein
     Sie müssen das Admin-Passwort zweimal gleich eingeben. Bitte beachten Sie
     dass es einen Unterschied macht, ob sie Grossbuchstaben oder Leerzeichen
     verwenden.
    
    Template: slapd/domain
    Type: string
    Description: Enter the domain name
    Description-de: Geben Sie den Domainnamen ein
    
    Template: slapd/replicate
    Type: boolean
    Default: false
    Description: Replicate to another LDAP server:
     It is possible to replicate changes made in this LDAP server to another
     server.
    Description-de: Auf anderen LDAP-Server weitergeben:
     Es ist möglich, an diesem LDAP-Server vorgenommene Änderungen an einen
     anderen Server weiterzugeben.
    
    Template: slapd/internal/adminpw
    Type: password
    Description: encrypted admin password
    Description-de: verlüsselte Admin-Passwort
    
    Template: slapd/password1
    Type: password
    Description: Admin password:
      Please enter the password for the admin entry in your LDAP directory.
    Description-de: Admin-Passwort:
     Bitte geben Sie das Passwort für den Admin-Eintrag ihres
     LDAP-Verzeichnisses ein.
    
    Template: slapd/custom_suffix
    Type: string
    Description: Enter your suffix:
     Please enter the desired directory suffix for your directory using
     standard LDAP DN syntax.
    Description-de: Geben Sie ihr Suffix ein:
     Bitte geben Sie das gewünschte Suffix für ihr Verzeichnis in der Standard
     LDAP DN-Syntax ein.
    
    Template: slapd/password2
    Type: password
    Description: Verify password:
    Description-de: Passwort wiederholen:
    
    Template: slapd/slurpd/credentials
    Type: password
    Description: Password:
     This the password used to bind to the remote LDAP server.
    Description-de: Passwort:
     Das Passwort, um auf den anderen LDAP-Server zuzugreifen.
    
    Template: slapd/unknown_class
    Type: note
    Description: Unknown object class used
     The root DN for your directory uses an unknown object class so the
     directory can not be initialized. Valid object classes are:
     .
      dcObject (dc)
      organizationalUnit (ou)
      country (c)
      organization (o)
    Description-de: Unbekannte Objektklasse verwendet
     Der Wurzel-DN für ihr Verzeichnis verwendet eine unbekannte Objektklasse,
     daher kann das Verzeichnis nicht initialisiert werden. Gültige
     Objektklassen sind:
     .
      dcObject (dc)
      organizationalUnit (ou)
      country (c)
      organization (o)
    
    Template: shared/locale/countrycode
    Type: string
    Description: Enter your country's two digit code:
    Description-de: Bitte geben Sie ihren Zwei-Zeichen Ländercode ein:
    
    Template: slapd/conf_exists
    Type: note
    Description: slapd is already configured
     You can use this configure system only once for the slapd daemon. Please
     either manually change the configuration in ${conf} or remove both it and
     your databases and rerun this configuration.
    Description-de: slapd bereits konfiguriert
     Sie können dieses Konfigurationssystem nur einmal für den slapd-Daemon
     verwenden. Bitte ändern Sie entweder von Hand die Konfiguration in ${conf}
     oder entfernen Sie sowohl diese Datei als auch Ihre Datenbanken und
     starten Sie diese Konfiguration erneut.
    
    Template: slapd/ldif_file
    Type: string
    Description: Path to ldif file:
     You need to give the full path of the file containing the ldif formatted
     entries to be entered into the database.
    Description-de: Pfad zur ldif-Datei:
     Bitte geben Sie den vollständigen Pfad der Datei ein, welche die im
     ldif-Format gehaltenen Einträge enthält, die in die Datenbank sollen.
    
    Template: shared/organization
    Type: string
    Description: Enter the name of your organization:
    Description-de: Geben Sie den Namen ihrer Organisation ein:
    
    Template: slapd/slurpd/port
    Type: string
    Default: 389
    Description: Port on remote server:
     The port on which the LDAP server runs on the remote server. This is
     almost always the default LDAP port (389).
    Description-de: Port des anderen Servers:
     Der Port, auf dem am anderen Server der LDAP-Dienst läuft. Dies ist fast
     immer der Standard-LDAP-Port (389).