====== 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