• Aucun résultat trouvé

Rendre OpenLDAP compatible à Samba

1. Les grandes étapes de la mise en place du contrôleur de domaine

1.3. Rendre OpenLDAP compatible à Samba

Pour son fonctionnement, OpenLDAP utilise des schémas (définition d’attributs comme ceux vu plus haut (dn, given name…)), nous devons donc inclure le schéma de Samba (afin d’inclure ses attributs à OpenLDAP).

Obtenir le schéma de Samba :

Installer le package de documentation de Samba (qui contient le schéma) : root@LDAP1:~#apt-get install samba-doc

Copier ce qui nous intéresse (le schéma) dans le répertoire d’OpenLDAP contenant les schémas:

root@LDAP1:~#cp

/usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/

Dé-zipper l’archive :

root@LDAP1:~#gzip -d /etc/ldap/schema/samba.schema.gz

Nous allons créer un fichier où nous allons inclure tous les schémas déjà présents sur OpenLDAP sans oublier de rajouter celui de Samba :

root@LDAP1:~#vi schema_convert.conf

Copier dedans ce qui suit :

include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema

include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/samba.schema

Grâce à la commande qui va suivre, nous allons prendre toutes les lignes du ficher schema_convert.conf afin de créer un fichier de configuration des attributs de Samba pour OpenLDAP :

root@LDAP1:~#mkdir /etc/ldap/ldif_output

root@LDAP1:~#slapcat -f schema_convert.conf -F /etc/ldap/ldif_output -n0 -s

"cn={12}samba,cn=schema,cn=config" > /etc/ldap/cn=samba.ldif

Ceci nous a donc créé le fichier de configuration nommé cn=samba.ldif, nous devons effectuer tout de même quelques modifications :

root@LDAP1:~#vi /etc/ldap/cn=samba.ldif

Dans les première lignes du fichier il faut effacer les « {12} » afin d’obtenir ceci : dn: cn=samba,cn=schema,cn=config

objectClass: olcSchemaConfig cn: samba

Et supprimer les lignes suivantes placées tout en bas du fichier :

Il suffit maintenant de rendre ce fichier effectif :

root@LDAP1:~#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/cn=samba.ldif

La définition du schéma étant faite, il ne reste plus qu’à créer les indexes (ce sont des sortes d’attributs que Samba utilise pour, par exemple, associer un utilisateur à un groupe) utilisés pas Samba.

Pour ce faire, nous créons comme d’habitude un fichier.ldif nommé samba_indexes.ldif : root@LDAP1:~#vi /etc/ldap/samba_indexes.ldif

On y copie dedans tous les indexes utilisés par Samba :

dn: olcDatabase={1}hdb,cn=config

Et on rend le fichier effectif :

root@LDAP1:~#ldapmodify -Y EXTERNAL -H ldapi:/// -f samba_indexes.ldif

À partir de la, je suis allé vérifier les logs afin de savoir si il y avait présence d’erreurs. Pour se faire utiliser la commande suivante :

root@LDAP1:~#vi + /var/log/syslog

#Commande : vi est un éditeur de texte, + permet d’aller directement à la fin du fichier et /var/log/syslog est le chemin pour accéder aux logs d’OpenLDAP (et de Samba).

En scrutant le fichier, je me suis rendu compte qu’il manquait des olcDbIndex, nous allons donc les rajouter en utilisant une autre méthode que l’injection de fichiers.ldif (moins conseillée car plus propice aux erreurs) afin de montrer cette autre possibilité (comme ce n’est pas un fichier.ldif, il n’y aura donc pas son avantage principal qui est la modification instantané de la configuration LDAP, il nous faudra donc arrêter le démon pour effectuer la modification).

On commence par arrêter le démon OpenLDAP : root@LDAP1:~#service slapd stop

On ouvre le fichier de configuration de la base LDAP (ce fichier ce nomme olcDatabase\=\{1}hdb.ldif) qui est lui-même un fichier.ldif :

root@LDAP1:~#vi

/etc/ldap/slapd.d/cn\=config/olcDatabase\=\{1}hdb.ldif

On parcourt ensuite ce fichier jusqu’à trouver les lignes débutants par olcDbIndex (elles se trouvent sous les lignes olcDbConfig), il suffit de les supprimer et de copier les lignes ci-dessous (contenants tous les types d’olcDbIndex possibles dont nous pourrions avoir besoin) : olcDbIndex: objectClass eq,pres

olcDbIndex: ou,cn,sn,mail,givenname eq,pres,sub olcDbIndex: uidNumber,gidNumber,memberUid eq,pres olcDbIndex: loginShell eq,pres

olcDbIndex: uniqueMember eq,pres

olcDbIndex: uid pres,sub,eq

olcDbIndex: displayName pres,sub,eq olcDbIndex: sambaSID eq

olcDbIndex: sambaPrimaryGroupSID eq olcDbIndex: sambaDomainName eq

olcDbIndex: sambaGroupType eq olcDbIndex: sambaSIDList eq olcDbIndex: default sub

Une fois fait, il suffit de sauvegarder et fermer le fichier et d’exécuter la commande suivante afin que la nouvelle configuration soit mise à jours (rien n’est dynamique avec les fichier.ldif, il faut toujours les rendre effectifs) :

root@LDAP1:~#slapindex

Autre petite erreur que j’ai pu faire ici : exécuter la commande slapindex avec le super utilisateur root. En effet, OpenLDAP fonctionne avec l’utilisateur openldap qui fait parti du groupe openldap, or le fait d’avoir exécuté cette commande avec root va changer les droits groupe et l’utilisateur de certains fichiers qui passeront de openldap à root (OpenLDAP ne pourra donc plus les lire ou exécuter ce qui provoquera de nombreuse erreurs).

Afin de réattribuer les bons droits utilisateur/groupe aux fichiers il suffit de ce placer dans les bons répertoires et d’exécuter la commande ls –l (qui liste les fichiers en affichant aussi les droits), puis de redonner les bon droits :

root@LDAP1:~#cd /var/lib/ldap root@LDAP1:~#ls –l

root@LDAP1:~#chown openldap:openldap * root@LDAP1:~#cd /etc/ldap/slapd.d/cn\=config/

root@LDAP1:~#ls -l

root@LDAP1:~#chown openldap:openldap *

#Commande : cd pour se placer dans le répertoire, ls –l pour lister et chown pour changer le groupe et l’utilisateur du fichier.

Tout est donc opérationnel pour passer à l’installation de Samba !

Documents relatifs