Comptes ldap (2)
Niveau :
Résumé : libpam-ldap
Hier nous avons créé un compte sur le ldap. Bien, mais on ne pouvait pas en faire grand chose. Il faut maintenant pouvoir se connecter. Il est théoriquement possible de tout faire avec libnss mais c’est à la fois plus difficile et moins fonctionnel qu’avec pam.
Comme vous le savez l’authentification sous linux se fait avec PAM. Nous allons donc utiliser un module dédié : libpam-ldap (cool le paquet porte le même nom).
LDAP
Cette fois ne nous force à utiliser aucun objectClass, mais comme il sait utiliser les attributs de la classe shadowAccount, on peut utiliser celle-ci pour se simplifier la vie.
Ajoutons le mot de passe à notre utilisateur. On crée le mot de passe LDAP à la main, mais par la suite vous verrez que ce n’est pas indispensable.
$ slappasswd -s test {SSHA}l5X6sBFomfk3tk02HEMWK4YLep7pqZDk
On ajoute ce mot de passe à l’utilisateur déjà créé :
$ ldapmodify -x -D "cn=admin,dc=linux-attitude,dc=fr" -W dn: uid=peck,ou=people,dc=linux-attitude,dc=fr changetype: modify add: userPassword userPassword: {SSHA}l5X6sBFomfk3tk02HEMWK4YLep7pqZDk
Un test de connexion avec ldapsearch vous montrera que le mot de passe est bien pris en compte :
$ ldapsearch -x -D "uid=peck,ou=people,dc=linux-attitude,dc=fr" -w test "uid=peck"
PAM
Maintenant il faut expliquer gentiment à PAM d’aller faire son authentification en utilisant LDAP. Pour cela hop, configuration dans /etc/pam.d/common-*. Certaines distributions devront peut-être configurer chaque élément un par un : su, login, ssh …
# common-auth # attention, le pam_unix devient sufficient auth sufficient pam_unix.so nullok_secure nodelay # use_first pass permet de ne demander qu'une fois les mot de passe pour les 2 modules auth sufficient pam_ldap.so use_first_pass
# common-account account required pam_unix.so account sufficient pam_ldap.so
# common-session session required pam_unix.so session optional pam_ldap.so
Maintenant attaquons-nous au fichier de configuration proprement dit : /etc/pam_ldap.conf. En voici l’essentiel :
# /etc/pam_ldap.conf base ou=people,dc=linux-attitude,dc=fr uri ldap://127.0.0.1/ ldap_version 3
Vous remarquerez que pam_ldap.conf et libnss-ldap.conf ne rentrent jamais en conflit. Vous pouvez faire un lien de l’un vers l’autre ou modifier la configuration pour que ce soient les mêmes fichiers. Cela peut vous éviter quelques désagréments.
Test
Maintenant tout marche, même l’authentification. Faites le test :
$ su - peck Password: $ id peck
Youpi, ça marche même en ssh. Bon c’est bien gentil, mais c’est encore un peu léger. La prochaine fois , on voudrait pouvoir faire encore plus.