Comptes ldap (1)
Niveau :
Résumé : nss-ldap
Il y a plusieurs façon de gérer ses comptes par ldap. Commençons par la plus simple. Plaçons-nous dans le cas d'une machine qui a des utilisateurs systèmes stockés sur le ldap.
Les utilisateurs sont gérés par la bibliothèque de nom nommée NSS (et là). Cette bibliothèque se configure dans /etc/nsswitch.conf. En supposant qu'on ait déjà un serveur ldap avec des utilisateurs, il suffit donc de modifier ce fichier ainsi que d'ajouter un fichier de configuration spécifique à nss-ldap.
Serveur LDAP
Supposons que vous ayez déjà un serveur installé (apt-get install slapd), avec un suffixe nommé dc=linux-attitude,dc=fr.
Si vous n'avez pas encore d'arborescence avec des utilisateurs, choisissez en une, par exemple ou=people,dc=linux-attitude,dc=fr.
Et peuplons d'utilisateurs notre arbre (je ne vais pas vous apprendre le LDAP). Attention, ici il faut utiliser la classe posixAccount pour les utilisateurs que nous allons créer. Il est possible de faire autrement, mais nous verrons ça plus tard.
Créons un utilisateur avec un uid qui ne rentrera pas en conflit avec les utilisateurs existants pour mieux tester. Utilisons un groupe non ldap pour simplifier le processus (attention, posixAccount est AUXILIARY, ce qui veut dire qu'il faut une autre classe pour l'utilisateur, inetOrgPerson par exemple) :
$ ldapadd -x -D "cn=admin,dc=linux-attitude,dc=fr" -W dn: uid=peck,ou=people,dc=linux-attitude,dc=fr uid: peck objectClass: posixAccount objectClass: inetOrgPerson cn: peckname sn: Peck Le bogoss uidNumber: 2000 gidNumber: 1000 homeDirectory : /tmp
NSS
Il nous faut le paquet libnss-ldap. Pour que NSS le prenne en compte, il faut éditer /etc/nsswitch.conf :
# on donne la priorité à ldap passwd: ldap compat
Maintenant, il faut configurer libnss-ldap, c'est un peu plus compliqué, mais le fichier de config par défaut est plein de commentaires. Voici le minimum à configurer :
# /etc/libnss-ldap.conf base ou=people,dc=nodomain uri ldap://127.0.0.1/ ldap_version 3
Test
Ce test doit être fait en root car nous n'avons pas tout mis en place. Nous n'avons pour l'instant défini que l'existence de l'utilisateur.
$ su - peck $ id # Une autre façon de faire : $ getent passwd peck
Youhou ça marche.
Demain nous ferons un peu mieux parce que là bon, c'est léger ...