Unter Ubuntu 9.10 (Karmic Koala) ist die Installation von OpenLDAP leider etwas kompliziert geworden. So wird nicht mehr nach einem Passwort gefragt, und man muss die Datenbank selbst aufsetzen. Das geht übrigens nur mehr mit dem root-Account am LDAP-Server. Richtig gelesen: nur eine sehr minimalistische Konfiguration wird von Haus aus mitgebracht. Unter [1] gibt es ein offizielles Statement dazu (in Kurzform: das ist Teil einer zukünftigen Strategie, um LDAP breitgefächerter - v.a. in Unternehmen - einzusetzen, Stichwort: Kerberos).
Nachdem es (Stand: 4. November 2009) weder offizielle noch inoffizielle Anleitungen dazu gibt, wie man die Datenbank selbst aufsetzt, hier ein HowTo.
Am Anfang steht natürlich die Installation von OpenLDAP:
apt-get -y install slapd ldap-utils
Ein dpkg-reconfigure slapd ist übrigens inzwischen nutzlos.
Anschließend fügen wir ein paar Schemata hinzu (das core.schema ist das einzige, das bereits vorhanden ist):
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
Dann setzen wir die initiale cn=config-Datenbank auf. Dazu öffnen wir in einem Editor eine temporäre Datei:
vi /root/db.ldif
und fügen folgendes Listing ein:
########################################################### # DATABASE SETUP ########################################################### # Load modules for database type dn: cn=module{0},cn=config objectClass: olcModuleList cn: module{0} olcModulePath: /usr/lib/ldap olcModuleLoad: {0}back_hdb # Create directory database dn: olcDatabase={1}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {1}hdb olcDbDirectory: /var/lib/ldap olcSuffix: dc=home,dc=com olcRootDN: cn=admin,dc=home,dc=com olcRootPW: 1234 olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=home,d c=ro" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=admin,dc=home,dc=com" write by * read olcLastMod: TRUE olcDbCheckpoint: 512 30 olcDbConfig: {0}set_cachesize 0 2097152 0 olcDbConfig: {1}set_lk_max_objects 1500 olcDbConfig: {2}set_lk_max_locks 1500 olcDbConfig: {3}set_lk_max_lockers 1500 olcDbIndex: uid pres,eq olcDbIndex: cn,sn,mail pres,eq,approx,sub olcDbIndex: objectClass eq ########################################################### # DEFAULTS MODIFICATION ########################################################### # Some of the defaults need to be modified in order to allow # remote access to the LDAP config. Otherwise only root # will have administrative access. dn: cn=config changetype: modify delete: olcAuthzRegexp dn: olcDatabase={-1}frontend,cn=config changetype: modify delete: olcAccess dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {CRYPT}7hzU8RaZxaGi2 dn: olcDatabase={0}config,cn=config changetype: modify delete: olcAccess
Diese Konfiguration wird mit folgendem Befehl eingespielt:
ldapadd -Y EXTERNAL -H ldapi:/// -f /root/db.ldif
Dadurch wird ein Benutzer cn=admin,dc=home,dc=com mit dem Passwort 1234 erstellt, der von nun an alle Rechte am LDAP-Server hat (Vorsicht ist hier geboten!)
Jetzt noch die minimalen Einträge für unseren LDAP DIT anlegen. Eine weitere temporäre Datei öffnen:
vi /tmp/base.ldif
und folgendes Listing einfügen:
# Tree root dn: dc=home,dc=com objectClass: dcObject objectclass: organization o: home.com dc: home description: Tree root # LDAP admin dn: cn=admin,dc=home,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin userPassword: 1234 description: LDAP administrator
...und das Ganze einlesen:
ldapadd -x -D cn=admin,dc=home,dc=com -W -f /tmp/base.ldif
wenn nach dem Passwort gefragt wird, das Passwort 1234 eingeben. Ab jetzt sollte man auf dem Stand einer frischen Installation von OpenLDAP unter Jaunty sein und kann das Verzeichnis ganz normal aufsetzen.
Mit folgenden Befehlen kann die Datenbank-Konfiguration übrigens testweise ausgelesen werden:
ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase={1}hdb ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W
...und das Verzeichnis selbst (diesmal als anonymer Benutzer ohne Passworteingabe - daher wird beim Eintrag unter cn=admin,dc=home,dc=com das Passwort-Feld nicht angezeigt):
ldapsearch -xLLL -b dc=home,dc=com
Viel Erfolg!
Robert
[1] https://lists.ubuntu.com/archives/ubuntu-server/2009-August/003182.html