Openldap

De Wiki_DR13
(Redirigé depuis Ldap1)
Aller à : navigation, rechercher

Reindexation / REsynchro[modifier]

Il arrive que le serveur perde ses indexes (grosse MAJ par exemple). 2 solutions :

Dans tous les cas, arrêter les annuaires clients pour éviter les soucis (ldap-webcontrat / ldap / ldap-dev) (/etc/init.d/slapd stop)

* Arreter le serveur ldap (/etc/init.d/slapd stop)
* Lancer la réindexation : slapindex  ---> TRES LONG !

Si le slapindex ne suffi pas ou si l'annuaire est totalement désynchronisé, il faut supprimer la base de donnée et la recréer :


/etc/init.d/slapd stop
rm -Rf /var/lib/ldap-people/*
 /etc/init.d/slapd start

Attention, va prendre plusieurs heures mais c'est le seul moyen de repartir au propre.

Une fois terminé, relancer les clients ldap-webcontrat / ldap / ldap-dev) (/etc/init.d/slapd start)


Installation[modifier]

Pour commencer, faites ouvrir le port 389 vers et depuis ldap.dr15.cnrs.fr Attention, les configuration suivantes laisse accès en lecture a tout les monde, ne faites ouvrir le port que vers la DR15 et vos autres serveurs mais pas au monde entier !

Base DN: ou=people,dc=cnrs,dc=fr
login : cn=admin,ou=people,dc=cnrs,dc=fr
mot de passe : AniMaT!on

On travaille dans root :

#cd /root

Préparation de la machine et des dépendances :

 #apt-get install libdb4.4 libdb4.4-dev libssl-dev openssl make gcc libsasl2-dev

Recuperation et décompression du logiciel :

#wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.3.36.tgz
#tar xvzf openldap-2.3.36.tgz

Configuration

[root@ldap root]#cd openldap-2.3.36
[root@ldap openldap-2.3.36]# CPPFLAGS=-DSLAPD_MULTIMASTER ./configure --enable-bdb=yes --enable-crypt=yes --with-tls=yes  \
--enable-spaswd=yes  --enable-overlays=yes --enable-accesslog=yes \
--enable-cleartext=yes --enable-dyngroup=yes  --enable-dynlist=yes --enable-refint=yes --enable-sasl=no  \
--prefix=/usr --libexecdir=/usr/sbin --sysconfdir=/etc --localstatedir=/var/lib --enable-ldap=yes  --enable-translucent=yes

./configure --enable-bdb=yes --enable-crypt=yes --with-tls=yes --enable-spaswd=yes --enable-overlays=yes --enable-accesslog=yes --enable-cleartext=yes --enable-dyngroup=yes --enable-dynlist=yes --enable-refint=yes --enable-sasl=no --prefix=/usr --libexecdir=/usr/sbin --sysconfdir=/etc --localstatedir=/var/lib --enable-ldap=yes --enable-translucent=yes

./configure --enable-bdb=yes --enable-crypt=yes --with-tls=yes --enable-spaswd=yes --enable-overlays=yes --enable-accesslog=yes \
--enable-cleartext=yes --prefix=/usr --libexecdir=/usr/sbin --sysconfdir=/etc --localstatedir=/var/lib --enable-ldap=yes \
--enable-translucent=yes --enable-meta=yes


Comme il est ecrit on fait :

[root@ldap openldap-2.3.36]# make depend

Puis on compile et on installe :

[root@ldap openldap-2.3.36]# make -j 4
[root@ldap openldap-2.3.36]# make install

Il faut maintenant recuperer le fichier schema du cnrs et l'ajouter a notre annuaire :

# wget http://xxx/cnrs.schema.gz
# gunzip cnrs.schema.gz
# mv cnrs.schema /etc/openldap/schema

Editons le fichier de config afin de préparer le serveur :

# vim /etc/openldap/slapd.conf

Voici mon fichier commenté :

# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/cnrs.schema
include         /etc/openldap/schema/dyngroup.schema
 

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel       0

# Where the dynamically loaded modules are stored
#modulepath     /usr/lib/ldap
#moduleload     back_bdb
#moduleload      dyngroup

#overlay         dynlist
#dynlist-attrset  groupOfURLs memberURL member

# The maximum number of entries that is returned for a search operation
sizelimit 500
# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

#######################################################################
# Specific Backend Directives for bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend         bdb
checkpoint 512 30

#######################################################################
# Specific Directives for database #1, of type bdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        bdb

# The base of your directory in database #1
suffix          "ou=People,dc=cnrs,dc=fr" 

# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
rootdn          "cn=admin,ou=People,dc=cnrs,dc=fr"
rootpw          "secret"

# Where the database file are physically stored for database #1
directory       "/var/lib/ldap-people"

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
# FAIRE DES TESTS EN FONCTION DE VOTRE SERVEUR

#dbconfig set_cachesize 0 2097152 0
#dbconfig set_cachesize 0 268435456 0
#dbconfig set_cachesize 0 1073741824 0

#Pour mon serveur virtuel avec 1 Go de Ram et 2 CPU virtuels :
dbconfig set_cachesize 0 536870912 0

dbconfig set_flags    DB_LOG_AUTOREMOVE

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500

# Indexing options for database #1
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uid                               eq,pres
index entryCSN,entryUUID                eq,pres
index cnrsDelegation                    eq,pres,sub


# Save the time that the entry gets modified, for database #1
lastmod         on

#overlay syncprov

#id du client (numero DR)
syncrepl rid=XXX  XXX =numeroDR
       provider=ldap://ldap.dr15.cnrs.fr:389
       searchbase="ou=People,dc=cnrs,dc=fr"
       type=refreshAndPersist
       interval=00:00:15:00
       scop=sub
       schemachecking=off
       updatedn="cn=admin,ou=people,dc=cnrs,dc=fr"
       bindmethod=simple
       binddn="cn=sync-drXXX,ou=people,dc=cnrs,dc=fr"
       credentials="Mot de passe"

# Where to store the replica logs for database #1
# replogfile    /var/lib/ldap/replog

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,shadowLastChange
        by dn="cn=admin,ou=People,dc=cnrs,dc=fr" write
        by anonymous auth
        by self write
        by * none

# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
access to dn.base="" by * read 

# The admin dn has full write access, everyone else
# can read everything.
access to *
        by dn="cn=admin,ou=People,dc=cnrs,dc=fr" 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=cnrs,dc=fr" write
#        by dnattr=owner write

Préparer les répertoires :

# mkdir /var/run/slapd/
# mkdir /var/lib/ldap-people

Démarrer le demon :

# slapd 

La replication devrait commencer avec le serveur de Bordeaux, vous pouvez le suivre en fait des requetes sur la base :

# ldapsearch -x -b "ou=People,dc=cnrs,dc=fr" 

Attention, la requete peut etre longue si vous avez modifier le paramètre sizelimit, elle liste la totalite du personnel du cnrs (environ 107000 entrées)

Pensez a lire le manuel ...

Utilisateurs[modifier]

Acces depuis toute la DR : lecture


Acces depuis l'IBMM : lecture de (ou=UMR5247*) contact : Remis Dernat, 04 67 66 81 66

Envoie des fichiers vers l'IBMM


Envoie des fichiers vers Lattes :

dr13@193.52.26.197 pass : !KegmevhevEt9



Ajout Attribut[modifier]

Se connecter sur le serveur ldap.

  • éditer le fichier /etc/openldap/schema.perso/DR13.schema
Ajouter à la fin l'attribut (faire un copier-coller du précédent)
penser à incrémenter l'identifiant unique (première ligne)
Name => renseigner le nom de l'attribut (ne pas mettre d'accent)
DSC => renseigner la libelle
le reste ne change pas
  • éditer le fichier /etc/openldap/schema.perso/cnrs.schema
Aller à l'objectClass cnrsPersonn et ajouter à la liste MAY le nom de l'attribut en mettant $ devant.
  • Pour indexer le nouvel attribut, éditer /etc/openldap/slapd.conf
Aller sur index et ajouter l'attribut à la suite.
Aller aussi sur translucent_Local et ajouter l'attribut à la fin de la ligne 
 (indique que la recherche de cet attribut doit se faire sur le ldap local)

  • redémarrer ldap
#/etc/init.d/slapd stop
#slapd -d 255   (permet d'éditer les logs, quand on arrive sur listen, faire ctrl C)
#/etc/init.d/slapd start


Firewall[modifier]

Pour modifier les règles, éditer le fichier /etc/firewall-start

Relancer le serveur :

/etc/init.d/firewall restart

Voir les règles :

/etc/init.d/firewall status

Arret du Firewall (uniquement pour test)

/etc/init.d/firewall stop