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:

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 :)