Suite à la création d’un nouveau projet que j’ai en tête (le projet Icare), visant à créer une sorte de contrôleur de domaine mais avec des outils UNIX (se basant sur un openLDAP local ou existant et puppet, et une interface web), je vais vous exposer ici comment intégrer une machine Ubuntu 12.10 sur un annuaire de type OpenLDAP.
Vous pourrez trouver une ancienne version (2011) plus générique et moins guidée du pam_ldap ici.
Vous devez posséder un annuaire openLDAP opérationnel, avec une ou plusieurs unités d’organisation (OU) contenant vos utilisateurs et groupes. Cet annuaire doit utiliser les schémas inetOrgPerson et posixAccount.
Les utilisateurs et groupes que vous déclarerez sur l’annuaire doivent utiliser un mot de passe de type LDAP (userPassword), et des champs uidNumber et gidNumber peuplés (et > 1000, voire 5000 dans l’idéal).
Nous allons installer les paquets associés au pam qui vont nous permettre d’établir un login LDAP sur la machine. Passez en root ou utilisez sudo afin d’installer les paquets.
apt-get install auth-client-config ldap-auth-client ldap-auth-config ldap-utils libnss-ldap libpam-ldap
Maintenant nous allons configurer le lien entre la machine et LDAP dans les fenêtres dialog.
Entrez tout d’abord l’URI de votre serveur LDAP (dans l’idéal avec SSL). Choisissez ensuite la version du protocole (en général 3).
On vous demande ici si on peut changer le mot de passe LDAP par le biais de la machine. Refusez, à moins que votre SI n’autorise un utilisateur en écriture sur les mots de passe (ce qui serait étonnant).
On vous demande ensuite s’il faut un login (utilisateur proxy) afin de pouvoir lire l’annuaire. Dans notre cas nous répondons non, sinon il faudrait indiquer le nom d’utilisateur (dn) et son mot de passe.
Enfin entrez le chemin principal de recherche des utilisateurs.
Ouvrez maintenant le fichier /etc/ldap.conf et recherchez les lignes nss_base_passwd, et similaires. Nous allons les éditer pour permettre le login via le pam_ldap
nss_base_passwd ou=people,dc=unix-experience,dc=fr
nss_base_shadow ou=people,dc=unix-experience,dc=fr
nss_base_group ou=groups,dc=unix-experience,dc=fr
Vérifiez le lien entre nss et LDAP en allant voir le contenu de /etc/nsswitch.conf. Vous devriez avoir 3 lignes contenant ldap:
passwd: files ldap
group: files ldap
shadow: files ldap
Maintenant on va relier auth-client-config à LDAP. Tapez la commande suivante:
auth-client-config -t nss -p lac_ldap
Afin de vérifier que le lien fonctionne tapez la commande suivante (en remplace myuser par le nom d’un utilisateur dans votre annuaire)
id myuser
Vous devriez voir apparaître l’UID et le GID de votre annuaire LDAP
uid=5000(myuser) gid=5000(ldap-users) groupes=5000(ldap-users)
Attention ! Le GID doit obligatoirement correspondre à un groupe LDAP existant sur l’annuaire (posixGroup), auquel cas l’utilisateur peut avoir des problèmes de connexion à la GUI.
Pour terminer sur la configuration du PAM, nous allons activer la création du répertoire utilisateur à la volée via le module pam_mkhomedir. Ouvrez le fichier /etc/pam.d/common-session et ajoutez la ligne suivante avant la ligne contenant pam_unix.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
Il est à noter que le répertoire /etc/skel contient un ensemble de fichiers par défaut à créer lors de la première connexion de l’utilisateur.
Pour terminer nous allons configurer lightdm afin de pouvoir se connecter à la machine avec des logins autres que locaux. Ouvrez le fichier /etc/lightdm/lightdm.conf et ajoutez la ligne suivante:
greeter-hide-users=true
Vous pouvez également supprimer l’accès aux utilisateurs invités en ajoutant la ligne
allow-guest=false
Attention ! Lightdm étant mal conçu la moindre erreur de frappe fera buguer le gestionnaire de connexion, espérons que Canonical fera quelque chose.
Vous savez désormais relier une machine Ubuntu à un annuaire openLDAP ! D’autres précisions seront ajoutées dans d’autres articles afin de préciser ce que l’on peut faire (montages automatiques, filtrage, etc…) Source 1 Source 2 Source 3