OpenLDAP
Inspiré de divers guides :
- https://tylersguides.com/guides/openldap-memberof-overlay/
- https://www.server-world.info/en/note?os=Debian_9&p=openldap&f=3
- https://wiki.lereset.org/ateliers:serveurmail:ldap-ssh
- https://blog.debugo.fr/openldap-overlays/
Installation
On commence par installer les paquets nécessaires et à répondre aux questions :
apt install slapd ldap-utils ldapscripts
dpkg-reconfigure -plow slapd
On configure ensuite les accès et les index (LDIF de la doc Debian) :
vim lcDbIndex.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f ./olcDbIndex.ldif
vim olcAccess.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f ./olcAccess.ldif
Attention, avant de créer les différents groupes et utilisateurs il faut s'assurer que les schémas et overlay sont bien présents.
Chargement du schéma misc
Pour avoir l'attribut xxxx nous avons besoin du schéma misc :
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/misc.ldif
Chargement des modules
On commence par vérifier quels modules sont chargés :
root@titane:~# slapcat -n 0 | grep olcModuleLoad
olcModuleLoad: {0}back_mdb
Si on a un retour à la commande précédente, on peut alors charger l'overlay :
root@titane:~# ldapmodify -Q -Y EXTERNAL -H ldapi:///
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: memberof.la
modifying entry "cn=module{0},cn=config"
root@titane:~# ldapadd -Y EXTERNAL -H ldapi:///
dn: olcOverlay=memberof,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcMemberOf
olcOverlay: memberof
olcMemberOfRefint: TRUE
On peut maintenant vérifier que tout est pris en compte :
root@titane:~# slapcat -n 0 | grep olcModuleLoad
olcModuleLoad: {0}back_mdb
olcModuleLoad: {1}memberof.la
Ajout d'un schéma
Configuration minimale
root@titane:/etc/ldap# cat base.ldif
# create new
# change to your own suffix for the field [dc=ipv5,dc=fr]
dn: ou=users,dc=ipv5,dc=fr
objectClass: organizationalUnit
ou: users
dn: ou=groups,dc=ipv5,dc=fr
objectClass: organizationalUnit
ou: groups
Que l'on charge ensuite via la commande :
$ slapadd -x -D cn=admin,dc=ipv5,dc=fr -W -f base.ldif
Création d'un nouvel utilisateur
Pour créer un nouvel utilisateur, il se connecter sur titane et exécuter en tant que root :
root@titane:~# create_ldap_user.sh john snow jsnow@winterfell.org
========= /tmp/john.snow.ldif =========
dn: uid=john.snow,ou=users,dc=ipv5,dc=fr
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetLocalMailRecipient
cn: john
gn: John
sn: Snow
mail: jsnow@winterfell.org
mailLocalAddress: john.snow@ipv5.fr
displayName: John Snow
userPassword: {SSHA}HVdKGIR2fbyZQGjFLII6xC7yftGyNkF9
loginShell: /bin/bash
uidNumber: 2002
gidNumber: 2002
homeDirectory: /home/ldap/john.snow
dn: cn=john.snow,ou=groups,dc=ipv5,dc=fr
objectClass: posixGroup
cn: john.snow
gidNumber: 2002
memberUid: john.snow
========= MANUAL STEP =========
In order to import, please run:
$ ldapadd -x -D cn=admin,dc=ipv5,dc=fr -W -f /tmp/john.snow.ldif