TP7 (LDAP)
NIS c'est un peu démodé… Aujourd'hui, on préfère utiliser LDAP.
1) Configuration du serveur LDAP
On configure le serveur LDAP sur la machine immortal. Les autres machines servent de client.
immortal$ adduser tutu immortal$ adduser titi
Création d'un password pour l'admin LDAP:
immortal$ slappasswd New password: admin Re-enter new password: admin {SSHA}XSd0QXLAiNz734f/8QGpaujkMdK5BxWp
Editer le fichier /etc/ldap/sldap.conf (attention, pas d'espace en début de ligne) :
# nom du domaine LDAP suffix "dc=mydomain,dc=fr" # nom de l'admin rootdn "cn=admin,dc=mydomain,dc=fr" # ajout d'un mot de passe admin rootpw "{SSHA}XSd0QXLAiNz734f/8QGpaujkMdK5BxWp"
Attention : Ne pas oublier de corriger le nom de domaine pour les ACLs en fin de fichier ! En gros, il faut remplacer tous les @XXXXXXXXX@ !
Nota Bene : dc = domain component
Dans le fichier /etc/default/slapd, modifiez :
SLAPD_CONF="/etc/ldap/slapd.conf"
Démarrage du serveur LDAP :
immortal$ /etc/init.d/slapd start
On vérifie que le démon a démarré !
immortal$ ps aux |grep slapd
2) Ajout des comptes dans le serveur LDAP
On va utiliser un script pour peupler automatiquement la base LDAP avec les comptes des utilisateurs (et d'autres trucs). Editer le fichier /etc/migrationtools/migrate_common.ph, et mettre à jour votre nom de domaine :
# Default DNS domain $DEFAULT_MAIL_DOMAIN = "mydomain.fr"; # Default base $DEFAULT_BASE = "dc=mydomain,dc=fr";
Ensuite, il faut lancer le script :
immortal$ cd /usr/share/migrationtools # Important : il faut dans ce répertoire... immortal$./migrate_all_online.sh # ... pour lancer le script ! Enter the X.500 naming context you wish to import into: [dc=mydomain,dc=fr] Enter the hostname of your LDAP server [ldap]: localhost Enter the manager DN: [cn=admin,dc=mydomain,dc=fr]: Enter the credentials to bind with: <-- mot de passe de l'admin !!! Do you wish to generate a DUAConfigProfile [yes|no]? no Importing into dc=mydomain,dc=fr... Creating naming context entries... Migrating groups... Migrating hosts... Migrating networks... Migrating users... Migrating netgroups... Migrating netgroups (by user)... Migrating netgroups (by host)... Importing into LDAP... adding new entry "dc=mydomain,dc=fr" ... adding new entry "cn=root,ou=Group,dc=mydomain,dc=fr" ... adding new entry "cn=toto,ou=Group,dc=mydomain,dc=fr" adding new entry "cn=tutu,ou=Group,dc=mydomain,dc=fr" adding new entry "cn=titi,ou=Group,dc=mydomain,dc=fr" ... adding new entry "cn=localhost,ou=Hosts,dc=mydomain,dc=fr" adding new entry "cn=cinder.localdomain,ou=Hosts,dc=mydomain,dc=fr" ... adding new entry "uid=toto,ou=People,dc=mydomain,dc=fr" adding new entry "uid=tutu,ou=People,dc=mydomain,dc=fr" adding new entry "uid=titi,ou=People,dc=mydomain,dc=fr"
En cas d'erreur
Bon, si ça ne marche pas, on fait le ménage :
$/etc/init.d/slapd stop $ rm -rf /var/lib/ldap/*
On vérifie ses configs et on recommence !!!
$/etc/init.d/slapd start
Test du serveur LDAP
On effectue une recherche sur toutes les entrées “objectclass=*”
immortal$ ldapsearch -x -b "dc=mydomain,dc=fr" -D "cn=admin,dc=mydomain,dc=fr" "(uid=*)" -W grave$ ldapsearch -x -h @immortal -b "dc=mydomain,dc=fr" -D "cn=admin,dc=mydomain,dc=fr" "(uid=*)" -W
ou plus simplement si tout le monde peut consulter le serveur LDAP (cf. ACL) :
immortal$ ldapsearch -x "(uid=*)"
Comparer le nombre de répondes avec /etc/passwd sur le serveur :
immortal$ wc -l /etc/passwd
L'ajout manuel d'une entrée se fait via un fichier LDIF (cf. manuel) :
immortal$ grep tutu /etc/passwd > tutu immortal$ migrate-passwd.pl tutu > tutu.ldif immortal$ ldapadd -x -D "cn=admin,dc=mydomain,dc=fr" -W -f tutu.ldif
(même chose pour le groupe)
3) Configuration d'un client LDAP
Nota Bene : Il n'y a pas de démon côté client!
Editer le fichier /etc/ldap/ldap.conf sur la machine cliente :
BASE dc=mydomain,dc=fr URI ldap://192.168.0.1 <--- IP du serveur LDAP !
Un petit test sur le client (pas besoin de mettre l'option -b)
$ ldapsearch -x -D "cn=admin,dc=mydomain,dc=fr" "(objectclass=account)" -W
4) Authentification via LDAP
Dans le fichier /etc/nsswitch.conf, ajouter ldap
passwd: files ldap group: files ldap shadow: files ldap
Attention : Ne pas oublier files, sinon mieux vaut que ldap fonctionne du premier coup !!!
$ /etc/init.d/nscd restart
A partir d'ici, les comptes LDAP sont visibles, mais l'authentification ne marche pas encore, car il faut encore configurer PAM, pour y authoriser l'authentification via LDAP.
On lance la commande suivante et on sélectionne Unix + LDAP.
$ pam-auth-update
Ensuite :
$ dpkg-reconfigure libpam-ldap $ dpkg-reconfigure libnss-ldapd
Attention, il faut saisir ldap://192.168.0.1 (ET NON ldapi !)
Pour finir :
$ dpkg-reconfigure nslcd
A vous de jouer… on peut ajouter le serveur NFS !
Test LDAP de UBX
Au CREMI uniquement, vous pouvez interrogez l'annuaire complet. Voici une requête qui interroge le sereur LDAP cresus et lui demande des infos sur l'UID auesnard (le mien) :
ldapsearch -h cresus -x -b "DC=cremi,DC=emi,DC=u-bordeaux1,DC=fr" "(uid=auesnard)"
Pour afficher la leste des enseignants :
ldapsearch -h cresus -x -LLL -b "DC=cremi,DC=emi,DC=u-bordeaux1,DC=fr" cn=teacher member