Ubuntu 8.04: Installation d'un serveur OpenLDAP

De Pegasus45

Cet article décrit l'installation d'un serveur OpenLDAP en vue d'une utilisation conjointe avec Samba3.

Installation

J'installe le serveur LDAP et les outils:

apt-get install slapd ldap-utils

Un mot de passe pour le compte administrateur de LDAP est demandé :

  LDAP Administrator password: adminldap

Configuration de OpenLDAP

Je reconfigure OpenLDAP :

dpkg-reconfigure slapd

Je réponds comme suit aux questions posées :

 Omit OpenLDAP server configuration? No
 DNS domain name: olympe.lan
 Organization name: olympe.lan
 LDAP Administrator password: adminldap
 Database backend to use: HDB
 Do you want the database to be removed when slapd is purged? No
 Move old database? Yes
 Allow LDAPv2 protocol? No

Je fais une sauvegarde de la base :

slapcat > ~/slapd.ldif

Installation du schéma Samba

Pour que la base soit compatible avec la structure Samba, je dois récupérer le schema Samba et l'installer dans le répertoire LDAP :

apt-get install samba-doc

zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > \
/etc/ldap/schema/samba.schema

Je saisie le mot de passe administrateur LDAP et je récupère la version MD5 du mot de passe. J'en ai besoin pour le copier dans le fichier slapd.conf :

slappasswd -h {MD5}

ce qui donne :

New password:
Re-enter new password:
{MD5}OsKcjbnKmODk14K//HrNlA==

Je crée un nouveau fichier de configuration pour le serveur LDAP:

mv /etc/ldap/slapd.conf /etc/ldap/slapd.conf.ori
vi /etc/ldap/slapd.conf

et je mets ce contenu :

# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#############################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/samba.schema

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel        none

# Where the dynamically loaded modules are stored
modulepath /usr/lib/ldap
moduleload back_hdb
# The maximum number of entries that is returned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

############################################################
# Specific Backend Directives for hdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend hdb

############################################################
# Specific Directives for database #1, of type hdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        hdb

# The base of your directory in database #1
suffix          "dc=olympe,dc=lan"
# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
rootdn          "cn=admin,dc=olympe,dc=lan"
rootpw          {MD5}OsKcjbnKmODk14K//HrNlA==

# Where the database file are physically stored for database #1
directory       "/var/lib/ldap"

# The dbconfig settings are used to generate a DB_CONFIG file the first
# time slapd starts.  They do NOT override existing an existing DB_CONFIG
# file.  You should therefore change these settings in DB_CONFIG directly
# or remove DB_CONFIG and restart slapd for changes to take effect.

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057 for more
# information.

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500
# Indices to maintain for this database
index objectClass                       eq,pres
index ou,cn,sn,mail,givenname           eq,pres,sub
index uidNumber,gidNumber,memberUid     eq,pres
index loginShell                        eq,pres
## required to support pdb_getsampwnam
index uid                               pres,sub,eq
## required to support pdb_getsambapwrid()
index displayName                       pres,sub,eq
index nisMapName,nisMapEntry            eq,pres,sub
index sambaSID                          eq
index sambaPrimaryGroupSID              eq
index sambaDomainName                   eq
index default                           sub
index uniqueMember                      eq
index sambaGroupType                    eq
index sambaSIDList                      eq

# Save the time that the entry gets modified, for database #1
lastmod         on

# Checkpoint the BerkeleyDB database periodically in case of system
# failure and to speed slapd shutdown.
checkpoint      512 30

# Where to store the replica logs for database #1
# replogfile /var/lib/ldap/replog
# users can authenticate and change their password
access to attrs=userPassword,sambaNTPassword,sambaLMPassword,sambaPwdMustChange,sambaPwdLastSet
        by self write
        by anonymous auth
        by * none

# those 2 parameters must be world readable for password aging to work correctly
# (or use a priviledge account in /etc/ldap.conf to bind to the directory)
access to attrs=shadowLastChange,shadowMax
        by self write
        by * read

# all others attributes are readable to everybody
access to *
        by * read

Je remets la sauvegarde faite précédemment :

/etc/init.d/slapd stop
rm -rf /var/lib/ldap/*
slapadd -l ~/slapd.ldif
slapindex
chown -Rf openldap:openldap /var/lib/ldap
/etc/init.d/slapd start

Pour vérifier la base :

slapcat

Installation de phpldapadmin

J'installe PHPLdapAdmin :

apt-get install apache2 phpldapadmin libapache2-mod-php5

J'affine le réglage de PHP :

vi /etc/php5/apache2/php.ini

avec les valeurs ci-dessous :

 memory_limit = 128M;
 post_max_size = 32M
 upload_max_filesize = 32M
 date.timezone = "Europe/Paris"
 display_errors = Off

Et je relance Apache :

/etc/init.d/apache2 restart