See you below a dump of the documentation I have written in 2006 about LDAP (in french as you can see

) . I have also documentation about LDAP+POSTFIX+SAMBA.
----------------
• Environnement
Système d’exploitation : Fedora Core 5 – noyau 2.6.15
Packages RPM :
- openldap-servers-2.3.19-4
- openldap-2.3.19-4
- openldap-clients-2.3.19-4
- nss_ldap-249-1
domaine : test.com
• Fichier /etc/hosts
Quote:
127.0.0.1 bunny.test.com bunny localhost
|
• Fichier /etc/openldap/slapd.conf. Fichier de configuration du démon slapd
Quote:
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
database bdb
suffix "dc=test,dc=com"
rootdn "cn=manager,dc=test,dc=com"
rootpw secret
directory /var/lib/ldap
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
|
Notes :
- include : inclusion des différents schémas standards nécessaires à l'utilisation des attributs les plus courantes. Si un attribut est manquant il est possible de créer son propre schéma.
- suffix : DN suffixe utilisé pour l'interrogation de la base
- rootdn : DN n'ayant aucune restriction d'opérations sur la base
• Fichier /etc/ldap.conf
Quote:
host 127.0.0.1
base dc=test,dc=com
rootbinddn cn=manager,dc=test,dc=com
nss_initgroups_ignoreusers root,ldap
|
Notes :
- base : le DN de base pour les recherches par défaut
- rootbinddn : le DN utiliser par le root. Ce DN sera créé via le fichier LDIF ci dessous.
• Fichier /etc/ldap.secret. Contient le mot de passe utilisé par le poste client. Fichier en chmod 600.
• Fichier LDIF
Quote:
dn: dc=test,dc=com
dc: test
objectClass: top
objectClass: domain
dn: cn=manager,dc=test,dc=com
objectClass: organizationalRole
cn: manager
|
Note : ce fichier ldif permet d'ajouter l'entrée test et manager.
Insertion du fichier LDIF
# ldapadd –c –x –h localhost –D "cn=manager,dc=test,dc=com" –W –f lefichier.ldif
• Fichier /etc/pam.d/system-auth. Pluggable Authentication Module. Gère les tâches d'authentification des applications sur le système.
Quote:
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth sufficient pam_ldap.so use_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_succeed_if.so uid < 500 quiet
account sufficient pam_ldap.so [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore authinfo_unavail=ignore]
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so
password required pam_deny.so
session required pam_limits.so
session required pam_unix.so
|
• Fichier /etc/nsswitch.conf. Précise où trouver les bases de données systèmes et dans quel ordre les interroger.
Quote:
passwd: files ldap
shadow: files ldap
group: files ldap
…
|
• Phpldapadmin
Utile pour gérer son annuaire ldap à partir d'un navigateur web. Outil développé en PHP.
A partir des informations précédentes et de l'insertion des données du fichier LDIF, il est possible de se connecter ainsi :
DN de connexion : cn=manager, dc=test, dc=com
mot de passe : secret
Exemple de peuplement de l'annuaire:
On rajoute l'OU group (organizationalUnit) pour stocker nos groupes d'utilisateurs
On rajoute le groupe CN user (posixGroup)
On rajoute l'OU people (organizationalUnit) pour stocker nos utilisateurs
On rajoute l'utilisateur user1 (posixAccount) qui appartient au groupe user, homedirectory: /home/user1 (à créer), loginshell: /bin/bash, uid: user1, userPassword (en md5), le groupe user.
Le home directory sera ensuite créé manuellement et les owner et group positionnés. En mode production il est donc à prévoir un (des) script de création de comptes à la volet (peuplement ldap, positionnement de autorisations, …).
• Débogage
Commande id : permet de retrouver les informations sur un compte. Typiquement on interrogera un compte système et un compte ldap pour vérifier que les bases systèmes sont correctement accédées. Permet donc de vérifier que ldap, nsswitch et pam sont configurés.
Exemple :
#id root
#id user1 (compte ldap)
commande getent : permet d’afficher l’intégralité des différentes bases (passwd, group, …)
Exemple :
#getent passwd
Affichera tous les comptes présent dans /etc/passwd et à la suite ceux trouvés dans ldap.
Commande tail – f /var/log/messages : pour suivre en temps réel les messages système lors des différents tests ldap.
• Tests
Test 1 : ouverture d’un shell sous Linux en utilisant un compte ldap
Test 2 : installation de Postfix et test d’envoi de message entre comptes locaux/ldap
Test 3 (non réalisé) : introduction de Samba. Utilisation des attributs samba (gestion des mots de passe – schéma samba et objectclass sambaSAMAccount). Voir la nécessité d’une OU computer pour inscrire les machines du domaine.
Annexe
• Fichier /etc/init.d/ldap : démarrage de slapd
Note : il peut être nécessaire de repositionner la priorité de démarrage et d'arrêt du service en cas de blocage au démarrage du serveur (chkconfig: - 27 73)
Quote:
#!/bin/bash
# ldap This shell script takes care of starting and stopping
# ldap servers (slapd and slurpd).
#
# chkconfig: - 27 73
# description: LDAP stands for Lightweight Directory Access Protocol, used \
# for implementing the industry standard directory services.
# processname: slapd
# config: /etc/openldap/slapd.conf
# pidfile: /var/run/openldap/slapd.pid
...
|