Vous êtes sur la page 1sur 10

OpenLdap

http://ferry.eof.eu.org/lesjournaux/ccn/public_html/x1507.html

CP2L - FORMATION EOF Prcdent Suivant

11. OpenLdap
11.1. Installation sous Debian
# apt-get install slapd ldap-utils ... Les NOUVEAUX paquets suivants seront installs : ldap-utils slapd ...

j'entre un mot de passe comme stipul dans le cours.

11.2. Installation sous ubuntu


# apt-get install slapd ldap-utils ... Les NOUVEAUX paquets suivants seront installs : ldap-utils slapd ...

aucune fentre ne s'ouvre pour me demander de configurer un mot de passe je lance donc le commande suivante :
#dpkg-reconfigure slapd

je voulais configurer le fichier /etc/ldap/slapd.conf mais je me suis rendu compte que ce fichier n'existait plus sous la dernire version d'unbuntu. Aprs quelques recherches, j'ai trouv une solution que vous trouverez ce lien : http://forum.ubuntu-fr.org/viewtopic.php?pid=3238774 Pour la suite, je continuerai la configuration sous mon systme Debian.

11.3. Configuration du serveur sous Debian


J'ouvre le fichier slapd.conf et je le modifie :
... moduleload back_bdb ... database bdb

# The base of your directory in database #1 suffix "dc=mairie,dc=lan" # rootdn directive for specifying a superuser on the database. This is needed # for syncrepl. rootdn "cn=admin,dc=mairie,dc=lan" rootpw "secret" ...

1 sur 10

30/09/2013 21:09

OpenLdap

http://ferry.eof.eu.org/lesjournaux/ccn/public_html/x1507.html

# These access lines apply to database #1 only access to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=mairie,dc=lan" write by anonymous auth by self write by * none ... # The admin dn has full write access, everyone else # can read everything. access to * by dn="cn=admin,dc=mairie,dc=lan" write by * read # For Netscape Roaming support, each user gets a roaming # profile for which they have write access to #access to dn=".*,ou=Roaming,o=morsnet" # by dn="cn=admin,dc=mairie,dc=lan" write # by dnattr=owner write ...

test de la configuration et redmarrage du service slapd :


# slaptest -f /etc/ldap/slapd.conf config file testing succeeded # /etc/init.d/slapd restart Stopping OpenLDAP: slapd. Starting OpenLDAP: slapd.

11.4. Administration du serveur


Je stoppe le service slapd et je charge les index :
# /etc/init.d/slapd stop Stopping OpenLDAP: slapd.

mais le message suivant s'affiche :


WARNING! Runnig as root! There's a fair chance slapd will fail to start. Check file permissions!

cela vient du fait que pendant l'installation de slapd, un utilisateur openldap t cr. C'est cet utilisateur qui lance le service slapd. Il faut donc vrifier les droits attribus au fichier slapd et les informations lies l'utilisateur openldap :
~$ ls -l /etc/ldap total 28 -rw-r--r-- 1 root root drwxr-xr-x 2 root root drwxr-xr-x 2 root root -rw-r----- 1 root openldap -rw-r----- 1 root openldap

245 4096 4096 4775 4756

oct 12 2008 ldap.conf oct 12 2008 sasl2 fv 2 14:44 schema fv 2 15:35 slapd.conf fv 2 14:44 slapd.conf~

$ getent passwd openldap:x:112:120:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false

je vrifie les droits des fichiers du rpertoire /var/lib/ldap :

2 sur 10

30/09/2013 21:09

OpenLdap

http://ferry.eof.eu.org/lesjournaux/ccn/public_html/x1507.html

$ ls -l /var/lib/ldap total 640 -rw-r--r-- 1 openldap -rw------- 1 openldap -rw------- 1 openldap -rw------- 1 openldap -rw------- 1 openldap -rw------- 1 openldap -rw-r--r-- 1 openldap -rw------- 1 openldap -rw------- 1 openldap -rw------- 1 openldap -rw------- 1 openldap

openldap 4096 fv openldap 8192 fv openldap 2629632 fv openldap 98304 fv openldap 565248 fv openldap 24576 fv openldap 96 fv openldap 8192 fv openldap 32768 fv openldap 57869 fv openldap 8192 fv

2 2 2 2 2 2 2 2 2 2 2

16:28 16:28 16:28 16:28 16:28 16:28 14:44 16:28 16:20 16:28 16:28

alock __db.001 __db.002 __db.003 __db.004 __db.005 DB_CONFIG dn2id.bdb id2entry.bdb log.0000000001 objectClass.bdb

Aprs quelques recherches, j'ai trouv la solution au lien suivant : http://www.commentcamarche.net/forum/affich-10737932-configuration-openldapsous-debian Il semble que la seule chose qu'il me reste faire est de stopper le service slapd et de lancer la commande slapindex sous l'utilisateur openldap :
# sudo -u openldap /usr/sbin/slapindex

l, il n'y a plus de message. Je redmarre le service :


# /etc/init.d/slapd start Starting OpenLDAP: slapd.

Je vrifie la base LDAP en l'exportant avec la commande slapcat :


#slapcat > base.ldif dn: objectClass: top objectClass: dcObject objectClass: organization o: mairie.lan dc: mairie structuralObjectClass: organization entryUUID: ca162242-a44c-102e-9188-dd42f13046b0 creatorsName: createTimestamp: 20100202134411Z entryCSN: 20100202134411.860285Z#000000#000#000000 modifiersName: modifyTimestamp: 20100202134411Z dn: objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e2NyeXB0fUFNdmtQMTNLb2FtNTI= structuralObjectClass: organizationalRole entryUUID: ca1843f6-a44c-102e-9189-dd42f13046b0 creatorsName: createTimestamp: 20100202134411Z entryCSN: 20100202134411.874759Z#000000#000#000000 modifiersName: modifyTimestamp: 20100202134411Z

en m'inspirant de cette base, je commence par ajouter une entre, dans un fichier,pour tester :

3 sur 10

30/09/2013 21:09

OpenLdap

http://ferry.eof.eu.org/lesjournaux/ccn/public_html/x1507.html

Important

ne pas oublier de stopper le service slapd !

$gedit annuaire.ldif dn:dc=mairie,dc=lan objectClass:top objectClass:dcObject objectClass:organization o:mairie.lan dc:mairie

je lance la commande slapadd. Pas de message d'erreurs... donc je continue. J'ajoute dans le fichiers annuaire.ldif, les entres suivantes :
dn:ou=users,dc=mairie,dc=lan objectClass:top objectClass:organizationalUnit ou:users dn:ou=groups,dc=mairie,dc=lan objectClass:top objectClass:organizationalUnit ou:groups dn:cn=utilisateurs,dc=mairie,dc=lan objectClass:posixGroup cn:utilisateurs gidNumber:2000 dn:ou=service_informatique,ou=groups,dc=mairie,dc=lan objectClass:top objectClass:organizationalUnit ou:service_informatique dn:cn=ccopin,ou=service_informatique,ou=groups,dc=mairie,dc=lan objectClass:account objectClass:posixAccount cn: ccopin uid: ccopin uidNumber:10001 gidNumber:2000 homeDirectory:/home/ccopin loginShell:/bin/sh dn:cn=fsourzat,ou=service_informatique,ou=groups,dc=mairie,dc=lan objectClass:account objectClass:posixAccount cn:fsourzat uid:fsourzat uidNumber:10002 gidNumber:2000 homeDirectory:/home/fsourzat loginShell:/bin/sh

l, j'ai un petit message d'erreur :


<= str2entry: str2ad(loginShell /bin/sh): empty AttributeDescription...

Je decide de supprimmer les lignes loginShell pour voir. Cette fois j'ai un autre message :

=> bdb_tool_entry_put: id2entry_add failed: DB_KEYEXIST: Key/data pair already exists (-30996) => bdb_tool_entry_put: txn_aborted! DB_KEYEXIST: Key/data pair already exists (-30996) slapadd: could not add entry dn="ou=users,dc=mairie,dc=lan" (line=1): txn_aborted! DB_KEYEXIST: Key/d

4 sur 10

30/09/2013 21:09

OpenLdap

http://ferry.eof.eu.org/lesjournaux/ccn/public_html/x1507.html

je ne laisse dans mon annuaire, que les deux dernires entres. et, cette fois, tout fonctionne. Je relance une sauvegarde de ma base ldap dont j'affiche une partie ci-dessous :
#slapcat > base.ldif $gedit base.ldif ... dn: dc=mairie,dc=lan objectClass: top objectClass: dcObject objectClass: organization o: mairie.lan dc: mairie structuralObjectClass: organization entryUUID: ca162242-a44c-102e-9188-dd42f13046b0 creatorsName: createTimestamp: 20100202134411Z entryCSN: 20100202134411.860285Z#000000#000#000000 modifiersName: modifyTimestamp: 20100202134411Z dn: ou=users,dc=mairie,dc=lan objectClass: top objectClass: organizationalUnit ou: users ... dn: ou=groups,dc=mairie,dc=lan objectClass: top objectClass: organizationalUnit ou: groups ... dn: cn=utilisateurs,dc=mairie,dc=lan objectClass: posixGroup cn: utilisateurs gidNumber: 2000 ... dn: ou=service_informatique,ou=groups,dc=mairie,dc=lan objectClass: top objectClass: organizationalUnit ou: service_informatique ... dn: cn=ccopin,ou=service_informatique,ou=groups,dc=mairie,dc=lan objectClass: account objectClass: posixAccount cn: ccopin uid: ccopin uidNumber: 10001 gidNumber: 2000 homeDirectory: /home/ccopin ... dn: cn=fsourzat,ou=service_informatique,ou=groups,dc=mairie,dc=lan objectClass: account objectClass: posixAccount cn: fsourzat uid: fsourzat uidNumber: 10002 gidNumber: 2000 homeDirectory: /home/fsourzat ...

Je reviens sur le loginShell. J'ajoute un nouvel utilisateur :


dn:cn=elaur,ou=service_informatique,ou=groups,dc=mairie,dc=lan

5 sur 10

30/09/2013 21:09

OpenLdap

http://ferry.eof.eu.org/lesjournaux/ccn/public_html/x1507.html

objectClass:account objectClass:posixAccount cn: elaur uid: elaur uidNumber:10003 gidNumber:2000 homeDirectory:/home/elaur loginShell:/bin/bash

et l, a marche ! Je redmarre le service slapd.

11.5. configuration des outils clients


Jusqu' prsent, je n'ai pas utiliser les commandes ldapadd ou ldapmodify...etc. Pour pouvoir les utiliser, il me faut modifier le fichier ldap.conf
#vi /etc/ldap/ldap.conf # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. BASE URI dc=mairie,dc=lan ldap://localhost:389 12 15 never

#SIZELIMIT #TIMELIMIT #DEREF

Je lance la commande ldapsearch -x et le rsultat s'affiche :


# # # # # # # extended LDIF LDAPv3 base <dc=mairie,dc=lan> (default) with scope subtree filter: (objectclass=*) requesting: ALL

# mairie.lan dn: dc=mairie,dc=lan objectClass: top objectClass: dcObject objectClass: organization o: mairie.lan dc: mairie # admin, mairie.lan dn: cn=admin,dc=mairie,dc=lan objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # users, mairie.lan dn: ou=users,dc=mairie,dc=lan objectClass: top objectClass: organizationalUnit ou: users # groups, mairie.lan dn: ou=groups,dc=mairie,dc=lan objectClass: top objectClass: organizationalUnit ou: groups

6 sur 10

30/09/2013 21:09

OpenLdap

http://ferry.eof.eu.org/lesjournaux/ccn/public_html/x1507.html

# utilisateurs, mairie.lan dn: cn=utilisateurs,dc=mairie,dc=lan objectClass: posixGroup cn: utilisateurs gidNumber: 2000 # service_informatique, groups, mairie.lan dn: ou=service_informatique,ou=groups,dc=mairie,dc=lan objectClass: top objectClass: organizationalUnit ou: service_informatique # ccopin, service_informatique, groups, mairie.lan dn: cn=ccopin,ou=service_informatique,ou=groups,dc=mairie,dc=lan objectClass: account objectClass: posixAccount cn: ccopin uid: ccopin uidNumber: 10001 gidNumber: 2000 homeDirectory: /home/ccopin # fsourzat, service_informatique, groups, mairie.lan dn: cn=fsourzat,ou=service_informatique,ou=groups,dc=mairie,dc=lan objectClass: account objectClass: posixAccount cn: fsourzat uid: fsourzat uidNumber: 10002 gidNumber: 2000 homeDirectory: /home/fsourzat # elaur, service_informatique, groups, mairie.lan dn: cn=elaur,ou=service_informatique,ou=groups,dc=mairie,dc=lan objectClass: account objectClass: posixAccount cn: elaur uid: elaur uidNumber: 10003 gidNumber: 2000 homeDirectory: /home/elaur loginShell: /bin/bash # search result search: 2 result: 0 Success # numResponses: 10 # numEntries: 9

11.6. Connexion de Samba l'annuaire


11.6.1. Prparation de l'annuaire
Je commence par stopper le service slapd et j'efface toutes les donnes prcdentes :
#rm -f /var/lib/ldap/*

je redmarre ensuite le service slapd. Je cre un fichier base.ldif tel que propos dans le cours :
dn:dc=mairie,dc=lan objectClass:top objectClass:dcObject objectClass:organization

7 sur 10

30/09/2013 21:09

OpenLdap

http://ferry.eof.eu.org/lesjournaux/ccn/public_html/x1507.html

o:mairie.lan dc:mairie dn:ou=users,dc=mairie,dc=lan objectClass:top objectClass:organizationalUnit ou:users dn:ou=groups,dc=mairie,dc=lan objectClass:top objectClass:organizationalUnit ou:groups dn:ou=machines,dc=mairie,dc=lan objectClass:top objectClass:organizationalUnit ou:machines

j'ajoute cette base mon annuaire :


# ldapadd -W -D "cn=admin,dc=mairie,dc=lan" -x -H ldap://localhost -f \base.ldif Enter LDAP Password: adding new entry "dc=mairie,dc=lan" adding new entry "ou=users,dc=mairie,dc=lan" adding new entry "ou=groups,dc=mairie,dc=lan" adding new entry "ou=machines,dc=mairie,dc=lan"

j'installe libnss-ldap, je modifie les fichiers /etc/libnss-ldap.conf et /etc/nsswitch.conf :


#apt-get install libnss-ldap ... #vi /etc/libnss-ldap host 127.0.0.1 port 389 ... base dc=mairie,dc=lan ... scope sub ... nss_base_passwd dc=mairie,dc=lan?sub nss_base_group ou=groups,dc=mairie,dc=lan?one

#vi /etc/nsswitch.conf passwd compat ldap group compat ldap ...

j'ajoute deux comptes en crant un fichier utilisateur.ldif :


$gedit utilisateur.ldif dn:cn=utilisateurs,ou=groups,dc=mairie,dc=lan objectClass:posixGroup cn:utilisateurs gidNumber:2000 dn:cn=fsourzat,ou=users,dc=mairie,dc=lan objectClass: account objectClass: posixAccount cn: fsourzat uid: fsourzat uidNumber: 10007 gidNumber: 2000

8 sur 10

30/09/2013 21:09

OpenLdap

http://ferry.eof.eu.org/lesjournaux/ccn/public_html/x1507.html

homeDirectory: /home/fsourzat loginShell: /bin/bash

# ldapadd -W -D "cn=admin,dc=mairie,dc=lan" -x -H ldap://localhost -f \utilisateur.ldif Enter LDAP Password: adding new entry "cn=utilisateurs,ou=groups,dc=mairie,dc=lan" adding new entry "cn=fsourzat,ou=users,dc=mairie,dc=lan"

je teste la reconnaissance des comptes :


# getent group utilisateurs:*:2000: # getent passwd fsourzat:*:10007:2000:fsourzat:/home/fsourzat:/bin/bash # id fsourzat uid=10007(fsourzat) gid=2000(utilisateurs) groupes=46(plugdev),2000(utilisateurs)

11.6.2. Connexion de Samba l'annuaire


Je commence par copier le schma samba dans le rpertoire schema d'openldap, puis je configure la partie include du fichier /etc/slapd.conf :
# cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema # cd /etc/ldap/schema ; gunzip samba.schema.gz

je modifie le fichier smb.conf :


[global] #nom du workgroup workgroup = mairie #Netbios de la machine netbios name = eof #Controle de domaine desactive os level = 40 domain logons = no domain master = no local master = no #Base de donnees de comptes passdb backend=ldapsam:ldap://localhost ldap admin dn = "cn=admin,dc=mairie,dc=lan" ldap ssl = off ldap delete dn = no ldap user suffix = ou=users ldap machine suffix = ou=machines ldap group suffix = ou=groups ldap suffix = dc=mairie,dc=lan #Authentification via la base de comptes locale security = user #Securite encrypt passwords

= yes

#guestion des logs log file = /var/log/samba/%m.log log level = 2 #Serveur de temps activ time server = yes #Partage fichiers accessible

9 sur 10

30/09/2013 21:09

OpenLdap

http://ferry.eof.eu.org/lesjournaux/ccn/public_html/x1507.html

[donnees] path = /home/ccopin/images comment = Partage Fichiers writeable = yes browsable = yes guest ok = yes valid users = @utilisateurs

j'enregistre le mot de passe de l'administrateur d'openldap dans samba :


# smbpasswd -w secret Setting stored password for "cn=admin,dc=mairie,dc=lan" in secrets.tdb

et j'ajoute l'utilisateur fsourzat samba :


# smbpasswd -a fsourzat New SMB password: Retype new SMB password: Added user fsourzat.

Je redmarre les deux services (samba et slapd) et je lance un pdbedit :


# pdbedit -L smbldap_search_domain_info: Searching for:[(&(objectClass=sambaDomain)(sambaDomainName=EOF))] smbldap_open_connection: connection opened smbldap_search_domain_info: Searching for:[(&(objectClass=sambaDomain)(sambaDomainName=EOF))] smbldap_open_connection: connection opened init_sam_from_ldap: Entry found for user: fsourzat fsourzat:10007:fsourzat

Samba est connect mon annuaire... Prcdent Samba 3 Sommaire Suivant Serveur Web

10 sur 10

30/09/2013 21:09

Vous aimerez peut-être aussi