Openldap

De ArchwikiFR


OpenLDAP est une implémentation open source du protocole LDAP (Lightweight Directory Access Protocol). Il s'agit d'une base non relationnelle optimisé pour accéder aux données en lecture, mais pas en écriture. Cet outil peut avoir plusieurs usages parmi lesquels on trouve principalement l'annuaire (pour être utiliser par un client mail, par exemple) ou fournir un service d'authentification (utilisé par d'autres outils tel que samba, kerberos, radius ou même le système GNU/Linux sur lequel il est installé où il peut remplacer l'utilisation de /etc/passwd) et peut ainsi stocker les données des utilisateurs.

Installation

Le paquet openldap contient à la fois le client et le serveur et sont installable depuis le dépôts core.

Serveur

Configuration

Astuce : Les commandes de OpenLDAP liées au serveur commencent toutes par slap

Fichier de configuration

La configuration du serveur est définie par le fichier /etc/openldap/slapd.conf.

A chaque changement du fichier /etc/openldap/slapd.conf, il est nécessaire de réinitialiser la configuration en supprimant le contenu du dossier /etc/openldap/slapd.d, par exemple, via la commande :

# rm -rf /etc/openldap/slapd.d/*

On peut alors générer les fichiers dans le répertoire /etc/openldap/slapd.d à partir de /etc/openldap/slapd.conf via la commande (l'utilisation de sudo -u permet aux fichier d'appartenir à ldap en utilisant qu'une seule commande) :

$ sudo -u ldap slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/

Il est nécessaire que le contenu de /etc/openldap/slapd.d appartiennent à ldap ou en tout cas que ce compte ait un accès au répertoire et aux fichiers qu'il contient, via la commande :

# chown ldap:ldap -R /etc/openldap/slapd.d

Domaine

Pour modifier le suffixe (ou nom de domaine), éditer le fichier de configuration. exemple sera utilisé pour le nom de domaine de deuxième niveau et fr pour le domaine de premier niveau pour l'exemple :

Fichier: /etc/openldap/slapd.conf
suffix     "dc=exemple,dc=fr"

Compte administrateur

Pour définir le compte de l'administrateur, il faut modifier le nom distinct dans le fichier de configuration (rootdn). Le compte root sera utilisé comme compte administrateur de OpenLDAP pour l'exemple :

Fichier: /etc/openldap/slapd.conf
rootdn     "cn=root,dc=exemple,dc=fr"

Mot de passe administrateur

Pour changer le mot de passe par défaut (secret), supprimer la ligne rootpw via un éditeur de texte ou via la commande :

# sed -i "/rootpw/ d" /etc/openldap/slapd.conf

Ensuite, rajouter un mot de passe chiffré grâce à la commande suivante :

# echo "rootpw $(slappasswd)" >> /etc/openldap/slapd.conf

Base de donnée

Si une base de donnée est déjà présente sur le système et que l'on souhaite reprendre la procédure depuis le début, c'est possible en supprimant (ou en déplaçant pour sauvegarder) les fichiers contenus dans /var/lib/openldap/openldap-data/.

Pour initialiser la base de donnée, celle fournie en exemple peut être utilisée en copiant /var/lib/openldap/openldap-data/DB_CONFIG.example en /var/lib/openldap/openldap-data/DB_CONFIG, par exemple via la commande suivante (celle-ci permet à ldap d'être le propriétaire du fichier) :

$ sudo -u ldap cp /etc/openldap/DB_CONFIG.example /var/lib/openldap/openldap-data/DB_CONFIG

Ne pas oublier de supprimer le contenu de /etc/openldap/slapd.d si un changement à été fait dans le fichier /etc/openldap/slapd.conf et de s'assurer que /etc/openldap/slapd.d appartient bien au compte système ldap comme décrit précédemment avant de continuer .

On peut alors créer la base de donnée en démarrant slapd.service via systemd :

# systemctl start slapd.service

Pour le stopper :

# systemctl stop slapd.service

Indexer la base grâce à la commande (à effectuer lorsque le service slapd.service est arrêté)  :

# sudo -u slapindex

On peut ensuite activer le service pour un démarrage en même temps que l'ordinateur :

# systemctl enable slapd.service

Évidemment, on peut aussi le désactiver :

# systemctl disable slapd.service