PREAMBULE: Je précise que je ne suis pas un expert ldap donc si certaines manips vous paraissent inutiles voire pire vous pouvez toujours m'en faire part :). Les choses étant donc bien claires, on va continuer.


Je passe l'install des paquets précédemment cités, c'est du simple yum install paquet.

Contrairement à Debian, lorsqu'on installe slapd et samba, il ne vous est rien demandé concernant le mot de passe du Manager ldap et le service n'est pas lancé.

Cela permet d'aller paramétrer les différents fichiers de config dont voici la liste et le contenu après modif (je vous conseille toutefois fortement de lire jusqu'au bout si vous voulez éviter des petites surprises). Il vous faudra évidemment remplacer dc=centos,dc=loc par vos valeurs dans tous les fichiers de config. Dans mon cas ce domaine est géré par un dns local.


Répertoire /etc/samba:
smb.conf

Répertoire /etc/smbldap-tools
smbldap_bind.conf
smbldap.conf

Répertoire /etc/openldap
slapd.conf
ldap.conf

Le schéma ldap pour samba est quant à lui déposé par le gestionnaire de paquets dans /usr/share/doc/samba-3.0.28/LDAP.
On le recopiera donc dans /etc/openldap/schema.

Je lance ensuite la commande : slappasswd
Slappasswd is used to generate an userPassword value suitable for use with ldapmodify(1) or slapd.conf(5) rootpw configuration directive.

Et je récupère la valeur retournée que je colle dans le fichier slapd.conf  (rootpw {SSHA}KUHRVm3/BxUwdoizF0jF9/Gdkoygizbg)

Je démarre ensuite le serveur ldap et je vais tester l'ajout d'une entrée:

#/etc/init.d/ldap start
#ldapadd -x -D "cn=Manager,dc=centos,dc=loc" -W -f example.ldif

Le fichier example.ldif contient:

            dn: dc=example,dc=com
            objectclass: dcObject
            objectclass: organization
            o: Local Centos
            dc: centos2

            dn: cn=Manager,dc=centos,dc=loc
            objectclass: organizationalRole
            cn: Manager

ATTENTION: si vous faites un copiié/collé de ces lignes veillez à ne laisser aucun espace superflu mais respectez la ligne vide.

L'insertion se passe correctement. N'étant pas fan de la ligne de commande (pour ldap uniquement je précise :) j'installe sur une autre machine
phpldapadmin  (trouvé sur phpldapadmin.sourceforge.net). Cela nécessite un serveur apache2, php5, php5-ldap . L'install sera réalisée sur une autre machine virtuelle et cela ne prend que quelques minutes. Je paramètre rapidement celui-ci (fichier de configuration dans config/config.php) et j'y vois déjà plus clair.




J'ai voulu ensuite utiliser la même méthode que sur debian pour ajouter les entrées nécessaires à Samaba dans le ldap. Pour cela il existe un script smbldap-populate
qui se trouve dans : /usr/share/doc/samba-3.0.28/LDAP/smbldap-tools-0.9.2/smbldap-populate.

Manque de chance cela n'a pas fonctionné cette fois-ci. Me voyant mal créer les entrées-qui-vont-bien une par une sur le ldap, je me suis connecté sur le serveur debian sur lequel j'avais effectué l'opération et j'ai exporté le nécessaire au format ldif via phpldapadmin. J'ai ensuite importé comme pour le fichier example.ldif.

#ldapadd -x -D "cn=Manager,dc=centos,dc=loc" -W -f imp1.ldif

#ldapadd -x -D "cn=Manager,dc=centos,dc=loc" -W -f imp2.ldif

#ldapadd -x -D "cn=Manager,dc=centos,dc=loc" -W -f imp3.ldif

#ldapadd -x -D "cn=Manager,dc=centos,dc=loc" -W -f imp4.ldif

#ldapadd -x -D "cn=Manager,dc=centos,dc=loc" -W -f imp5.ldif


Je laisse à dispo les fichiers au cas où il vous arriverait la même mésaventure. Là encore faites attention aux valeurs, notamment celle retournée par :
net getlocalsid que vous devrez adapter à votre environnement.


Résultat final:

phpldapadmin

Par précaution je revalide les mots de passe des utilisateurs qui vont me servir de test(pme, pmenier).

C'est fini pour le ldap.

Passons à samba: je tente de démarrer le service:

#/etc/init.d/smb start  => Aaaaaaaaargghhh ! Restons calme et allons voir les logs :

Et je vois:

[2008/10/18 16:03:51, 0] passdb/secrets.c:fetch_ldap_pw(845)
  fetch_ldap_pw: neither ldap secret retrieved!
[2008/10/18 16:03:51, 0] lib/smbldap.c:smbldap_connect_system(942)
  ldap_connect_system: Failed to retrieve password from secrets.tdb
[2008/10/18 16:03:51, 1] lib/smbldap.c:another_ldap_try(1153)
  Connection to LDAP server failed for the 15 try!

Une petite recherche Google m'apprendra :

1) Check the cooker and Samba archives. I've answered this questions just a few days ago.

Ca c'est le genre de réponse que j'aime. Le mec prend la peine d'écrire cela alors que, un onglet plus loin, j'apprends qu'il suffit de lancer:

smbpasswd -W
Enter your root dn or Manager password of OpenLDAP which was specified in /etc/openldap/slapd.conf in rootpw

J'entre donc le pass et je retente le démarrage de samba. Cette fois c'est tout bon.

Je vais maintenant tester le montage cifs sur ma machine:

root@p733:~# mount -t cifs //192.168.0.88/pme /vm4 -o user=pme,uid=1000,gid=1000,umask=022
Password:
root@p733:~# mount
.....
//192.168.0.88/pme on /vm4 type cifs (rw,mand)


Je teste ensuite l'écriture :


root@p733:~# su - pme
pme@p733:~$ cd /vm4
pme@p733:/vm4$ ls
pme@p733:/vm4$
pme@p733:/vm4$ touch test-final
pme@p733:/vm4$ ls
test-final
pme@p733:/vm4$

C'est bon :)


Curieux tout de même de n'avoir pas pu utiliser le smbldap-populate, j'ai relu les différents fichiers dans
/usr/share/doc/samba-3.0.28/LDAP/smbldap-tools-0.9.2 et je me suis rendu compte que j'avais zappé une commande... avant de lancer
smbldap-populate et cette commande est comme par hasard : smbpasswd -W !!!

Franchement je n'ai pas envie de tout casser pour vérifier mais si le coeur vous en dit n'hésitez pas :)