Ce document relate mes tests d'installation et d'essai de NSS/PAM LDAP sur ma machine perso.
I- PRÉREQUIS
Le package nss_ldap-105-1.i386.rpm est un 'regroupement' des sources de pam_ldap et de nss_ldap. Il contient les fichiers suivants : cliquez ici
Pour compiler des modules d'accès à l'annuaire LDAP en perl ou python par exemple, il faut installer le package openldap-devel-1.2.9-5.i386.rpm.
II- INSTALLATION
Packages RPM : Leurs installations s'effectuent en root.
rpm -i openldap-1.2.9-5.i386.rpm rpm -i openldap-devel-1.2.9-5.i386.rpm rpm -i pam-0.68-7.i386.rpm rpm -i nss_ldap-105-1.i386.rpm
Fichiers de configuration de OpenLDAP :
Fichiers de configuration de PAM :
Fichiers de configuration de NSS/PAM/LDAP :
Il faut modifier le fichier de configuration de OpenLDAP /etc/openldap/slapd.conf pour qu'il reflète bien votre domaine ; le mien (qui est bidon!) est youpi.fr.
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /etc/openldap/slapd.at.conf
include /etc/openldap/slapd.oc.conf
#include /etc/openldap/netscape.oc.conf
#include /etc/openldap/nss.oc.conf
schemacheck off
#referral ldap://root.openldap.org/
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args
#######################################################################
# ldbm database definitions
#######################################################################
database ldbm
suffix "dc=youpi,dc=fr"
rootdn "cn=root,dc=youpi,dc=fr"
rootpw secret
# cleartext passwords, especially for the rootdn, should
# be avoid. See slapd.conf(5) for details.
directory /usr/tmp
Les lignes du type include ..., quand elles ne sont pas commentées, permettent de charger les attributs qu'utilise NSS/LDAP par exemple. Ceci permet au serveur (lorsque schemacheck est on) de vérifier la validité des requêtes (pratique lors du développement de clients).
Le fichier doit être en permission 600. En effet, il contient le mot de passe
de l'administrateur de l'annuaire !!!
2- Démarrage du serveur LDAP
Pour le lancer automatiquement au démarrage de la machine, exécuter setup. Dans System services, cocher ldap.
Dans mon cas, je le lance à la main de telle sorte qu'il affiche les messages :
/usr/sbin/slapd -d 1
3- Création d'un utilisateur
Pour tester NSS/LDAP, j'ai crée un utilisateur test avec la commande adduser. J'ai ensuite modifié son mot de passe avec passwd.
Les fichiers /etc/passwd, /etc/shadow, /etc/group ont été modifiés. Ils comportent maintenant les informations sur l'utilisateur crée.
L'opération que j'ai effectuée consiste à migrer l'utilisateur test grâce aux scripts MigrationTools de PADL.
a- Configuration des scripts
Dans le fichier migrate_common.ph, il faut modifier les variables $DEFAULT_MAIL_DOMAIN et $DEFAULT_BASE.
Pour chez moi, j'ai (extrait) :
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "youpi.fr";
# Default base
$DEFAULT_BASE = "dc=youpi,dc=fr";
b- Utilisation des scripts
Ils s'utilisent en passant le nom des fichiers à convertir. Le résultat est affiché sur la sortie standard au format ldif.
Par exemple, pour "convertir" le fichier passwd et shadow, il faut exécuter la commande suivante migrate_passwd.pl /etc/passwd.
De même, pour convertir le fichier group, il faut exécuter migrate_group.pl /etc/group.
Je n'ai extrait que les informations relatives à l'utilisateur test que j'ai ensuite mis dans le fichier test.nss. Ce fichier contient également la création du domaine et de quelques unités organisationnelles (People et Group).
dn: dc=youpi,dc=fr
objectclass: organization
o: Youpi
description: Ma boite
dn: ou=People,dc=youpi,dc=fr
objectclass: organizationalUnit
ou: People
description: Personnels
dn: ou=Group,dc=youpi,dc=fr
objectclass: organizationalUnit
ou: Group
description: Groupes
dn: uid=test,ou=People,dc=youpi,dc=fr
uid: test
cn: test
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$u4Eq6gmG$0FlCDWk9n/5HIwKNSDOpe/
shadowLastChange: 11049
shadowMax: 99999
shadowWarning: 7
shadowInactive: -1
shadowExpire: -1
shadowFlag: 134540060
loginShell: /bin/bash
uidNumber: 501
gidNumber: 501
homeDirectory: /home/test
dn: cn=test,ou=Group,dc=youpi,dc=fr
objectClass: posixGroup
objectClass: top
cn: test
userPassword: {crypt}x
gidNumber: 501
Pour tout créer (domaine, groupes, utilisateurs), exécuter la commande suivante : ldapadd -D "cn=root,dc=youpi,dc=fr" -w secret -f test.nss
Ne faites cela que sur une machine de test !!!
Il faut ensuite retirer les références à l'utilisateur test dans /etc/passwd,
/etc/shadow, /etc/group.
3- Fichier /etc/ldap.conf
Maintenant, il faut modifier le fichier /etc/ldap.conf. Ce fichier est utilisé par NSS/PAM LDAP. Ce fichier est très important. En effet, c'est lui qui indique aux bibliothèques de NSS et PAM où se situe l'annuaire.
Voici le contenu de mon fichier :
# Your LDAP server. Must be resolvable without using LDAP.
host 127.0.0.1
# The distinguished name of the search base.
base dc=youpi,dc=fr
# The LDAP version to use (defaults to 2)
#ldap_version 3
# The distinguished name to bind to the server with.
# Optional: default is to bind anonymously.
#binddn cn=manager,dc=padl,dc=com
# The credentials to bind with.
# Optional: default is no credential.
#bindpw secret
# The port.
# Optional: default is 389.
#port 389
# The search scope.
#scope sub
#scope one
#scope base
# The following options are specific to nss_ldap.
# The hashing algorith your libc uses.
# Optional: default is des
#crypt md5
#crypt sha
#crypt des
# The following options are specific to pam_ldap.
# Filter to AND with uid=%s
#pam_filter objectclass=account
# The user ID attribute (defaults to uid)
#pam_login_attribute uid
# Search the root DSE for the password policy (works
# with Netscape Directory Server)
#pam_lookup_policy yes
# Group to enforce membership of
#pam_groupdn cn=PAM,ou=Groups,dc=padl,dc=com
# Group member attribute
#pam_member_attribute uniquemember
# Hash password locally; required for University of
# Michigan LDAP server, and works with Netscape
# Directory Server if you're using the UNIX-Crypt
# hash mechanism and not using the NT Synchronization
# service.
#pam_crypt local
4- Modification de /etc/nsswitch.conf
Il faut rajouter ldap dans les sections passwd, shadow, group du fichier /etc/nsswitch.conf
Voici mon fichier :
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
# nisplus or nis+ Use NIS+ (NIS version 3)
# nis or yp Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files
# db Use the local database (.db) files
# compat Use NIS on compat mode
# [NOTFOUND=return] Stop searching if not found so far
#
# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd: db files nisplus nis
#shadow: db files nisplus nis
#group: db files nisplus nis
passwd: files ldap nisplus nis
shadow: files ldap nisplus nis
group: files ldap nisplus nis
#hosts: db files nisplus nis dns
hosts: files nisplus nis dns
services: nisplus [NOTFOUND=return] files
networks: nisplus [NOTFOUND=return] files
protocols: nisplus [NOTFOUND=return] files
rpc: nisplus [NOTFOUND=return] files
ethers: nisplus [NOTFOUND=return] files
netmasks: nisplus [NOTFOUND=return] files
bootparams: nisplus [NOTFOUND=return] files
netgroup: nisplus
publickey: nisplus
automount: files nisplus
aliases: files nisplus
Après, en exécutant su test dans une console, on remarque que le serveur LDAP
a de l'activité. Pourtant, l'authentification échoue (et oui, PAM !)
5- Modification de /etc/pam.d/su
J'ouvre une console root au cas où...
Je copie le fichier /etc/pam.d/su dans /etc/pam.d/su.old puis recopie le fichier /usr/doc/nss_ldap-105/pam.d/su dans /etc/pam.d/.
Je retente de me connecter en test dans une autre console que celle de root.
jf@alyson> su test Password: [test@alyson jf]$
Ca MMAAAAAAAAAARRRCHHHHEEE !!!!
Je restaure le fichier /etc/pam.d/su et /etc/nsswitch.conf
IV- Remarques
Pour que les autres programmes comme login (voir dans /usr/doc/nss_ldap-105/pam.d/) puissent fonctionner avec l'annuaire LDAP, il ne faut pas oublier de modifier les fichiers de /etc/pam.d.
Lire la rfc2307.txt (contenue entre autre dans les sources de nss_ldap).
Fichier nss.oc.conf (commenté dans /etc/openldap/slapd.conf)
V- Liens
![]() |
![]() |
![]() |