Comptes ldap (3)
Niveau :
Résumé : libmap-ldap ; passwd ; chsh ; chfn ; adduser
Désolé, j'ai oublié la suite de la série LDAP. On peut faire un peu mieux que la dernière fois.
Changer son mot de passe
Nous n'avons pas activé le changement de mot de passe. Pour cela, c'est assez simple, il suffit de modifier common-password (cela peut être ailleurs pour certaines distributions ...) :
password sufficient pam_unix.so nullok obscure min=4 max=8 md5 password sufficient pam_ldap.so
Il faut aussi modifier /etc/pam_ldap.conf pour que pam ne modifie pas directement le mot de passe, mais utilise les fonctions de ldap prévues à cet effet. Cela permet qu'il ne soit pas stocké en clair, mais avec la méthode définie dans la configuration de ldap ({SSHA} par défaut).
# A ajouter dans /etc/pam_ldap.conf pam_password exop
Et voilà vous pouvez tester la commande passwd. Mais vous constaterez qu'il y a quelque chose qui cloche. Si vous lancez la commande en root, l'ancien mot de passe vous est quand même demandé. C'est parce que vous n'avez pas les droits d'administrateur sur le ldap.
Pour remédier à cela, il vous faut un compte ldap qui a le droit de modifier le champ password des autres utilisateurs, par exemple l'administrateur ldap. Puis renseignez ce compte dans pam_ldap.conf :
# /etc/pam_ldap.conf # Il faudra stocker le mot de passe correspondant en clair dans /etc/pam_ldap.secret # Ce fichier doit appartenir à root et être en mode 600 rootbinddn cn=admin,dc=linux-attitude,dc=fr
Ça y est vous êtes prêts.
chsh, chfn, adduser
Les utilisateurs ont le droit de changer leur shell ainsi que leurs informations personnelles. Pour cela ils ont les commandes chsh et chfn.
Malheureusement ces commandes manipulent /etc/passwd. Le paquet libpam-ldap fournit des script pour remplacer ces commandes, mais ils sont un peu basiques et nécessitent libnet-ldap-perl (Net::LDAP). Vous pouvez vous baser dessus pour faire les votres si vous pensez que ces fonctionnalités sont indispensables pour vos utilisateurs. On les trouve dans /usr/share/doc/libpam-ldap/examples/ . un certain nombre de paramètres sont codés en dur et peu de vérifications d'erreur sont faites.
Si vous modifiez vos binaires dans /usr/bin sur debian, faites attention la prochaine mise à jour risque de les remplacer. Pour éviter ce problème, il existe la commande dpkg-divert :
# On fait croire aux paquets qu'ils installent /usr/bin/chfn alors qu'ils installent en réalité /usr/bin/chfn.old $ dpkg-divert --add --rename --divert /usr/bin/chfn.old /usr/bin/chfn # voila, vous pouvez maintenant remplacer /usr/bin/chfn
Autre problème, adduser ne comprend pas non plus le ldap. Ici le problème est le même mais la solution un peu meilleure. Un paquet ldapscripts est disponible et il contient des commandes comme ldapadduser pour vous faciliter la création d'utilisateurs ldap. Les commandes sont configurées dans /etc/ldapscripts/ .
Tout ceci pourrait s'améliorer dans de prochaines versions, un patch a l'air en cours de développement pour le paquet shadow (qui contient ces outils) qui utiliserait la libnss pour effectuer ces actions. Les commandes fonctionneraient donc directement.
Quelques remarques
Depuis que nous avons des vrais comptes systèmes basés sur le ldap nous sommes contents. Mais quelques petites choses tout de même :
- Gardez le compte root sur le système, on ne sait jamais, si le ldap tombe, vous seriez bien embêtés
- Faites attentions aux droits dans le ldap, ils impactent les fonctionnalités des commandes systèmes (droit de lister les autres utilisateurs par exemple)
- Avec un serveur distant, le ldap devient une forme de NIS
- Vous pouvez utilisez la réplication ldap pour résister aux crash
- Vous pouvez toujours garder une mot de passe local au cas où le ldap ne marche pas (pam fait les 2)
- Vous pouvez vous connecter à un controleur de domaine windows
- Si vous avez de problèmes les logs d'authentification sont dans /var/log/auth.log
- Vous pouvez vouloir ne mettre en place que l'authentification via pam et ne pas utiliser libnss. Ce cas correspond à des utilisateurs virtuels (comme pour le ftp) qui n'utiliseront pas alors de vrai compte sur le système.