OVH Cloud OVH Cloud

identification avec openLDAP

6 réponses
Avatar
Denis
Bonjour à tous !

Je suis en train de configurer un serveur openldap pour ouvrir des sessions
depuis un poste distant.

Quand je me connectes sur le client avec un user qui n'existe que dans la
base openldap, ça marche, j'arrives à créer les repertoires personnels, et
les fichiers ont le bon uid.

Mais je reçois un message d'erreur me disant qu'il est incapable de trouver
le nom de l'utilisateur. Et si je fais getent passwd, je vois bien mes
utilisateurs openldap, avec leur uid et leur nom.

D'où vient ce problème ?

Merci de votre aide.

Denis

6 réponses

Avatar
Raphaël 'SurcouF' Bordet

Bonjour à tous !

Je suis en train de configurer un serveur openldap pour ouvrir des sessions
depuis un poste distant.

Quand je me connectes sur le client avec un user qui n'existe que dans la
base openldap, ça marche, j'arrives à créer les repertoires personnels, et
les fichiers ont le bon uid.

Mais je reçois un message d'erreur me disant qu'il est incapable de trouver
le nom de l'utilisateur. Et si je fais getent passwd, je vois bien mes
utilisateurs openldap, avec leur uid et leur nom.

D'où vient ce problème ?


As-tu installer pam_ldap ET nss_ldap (et donc, configuré
/etc/nsswitch.conf) ?

--
Raphaël 'SurcouF' Bordet
http://debianfr.net/ |

Avatar
Denis
Raphaël 'SurcouF' Bordet wrote:


Bonjour à tous !

Je suis en train de configurer un serveur openldap pour ouvrir des
sessions depuis un poste distant.

Quand je me connectes sur le client avec un user qui n'existe que dans la
base openldap, ça marche, j'arrives à créer les repertoires personnels,
et les fichiers ont le bon uid.

Mais je reçois un message d'erreur me disant qu'il est incapable de
trouver le nom de l'utilisateur. Et si je fais getent passwd, je vois
bien mes utilisateurs openldap, avec leur uid et leur nom.

D'où vient ce problème ?


As-tu installer pam_ldap ET nss_ldap (et donc, configuré
/etc/nsswitch.conf) ?

Oui, les deux sont installés



Avatar
Raphaël 'SurcouF' Bordet
Denis wrote:
Raphaël 'SurcouF' Bordet wrote:




Bonjour à tous !

Je suis en train de configurer un serveur openldap pour ouvrir des
sessions depuis un poste distant.

Quand je me connectes sur le client avec un user qui n'existe que dans la
base openldap, ça marche, j'arrives à créer les repertoires personnels,
et les fichiers ont le bon uid.

Mais je reçois un message d'erreur me disant qu'il est incapable de
trouver le nom de l'utilisateur. Et si je fais getent passwd, je vois
bien mes utilisateurs openldap, avec leur uid et leur nom.

D'où vient ce problème ?


As-tu installer pam_ldap ET nss_ldap (et donc, configuré
/etc/nsswitch.conf) ?



Oui, les deux sont installés


Peut--on voir une copie de ces fichiers (pam_ldap, nss_ldap et nsswitch)
ainsi qu'un ldif d'un utilisateur (sans le paramètre userPassword
évidemment) ?

--
Raphaël 'SurcouF' Bordet
http://debianfr.net |



Avatar
Denis
Ça y est, j'ai tout repris à 0, et ça marche enfin, sans que je trouve
exactement d'où venait le problème. J'envoie quand même mes fichiers de
configurations, pour savoir s'il y a des optimisations à faire.

Un grand merci pour ton aide.

Denis

Voici mes fichiers de configurations, sachant que la machine
cheradenine.zakalwe.ata est le serveur, et algernon.zakalwe.ata est le
client :

############# SERVEUR #############

/etc/openldap/slapd.conf :

# section globale

include /usr/share/openldap/schema/core.schema
include /usr/share/openldap/schema/cosine.schema
include /usr/share/openldap/schema/nis.schema

loglevel 296
pidfile /var/run/ldap/slapd.pid
argsfile /var/run/ldap/slapd.args

TLSCipherSuite HIGH
TLSCertificateFile /etc/ssl/openldap/slapd-cert.pem
TLSCertificateKeyFile /etc/ssl/openldap/slapd-cle.pem

password-hash {SSHA}

# section base de données

database bdb
suffix "dc=zakalwe,dc=ata"
rootdn "cnÞnis,dc=zakalwe,dc=ata"
rootpw {SSHA}xxxxxxxxxxxxxxxxxxxxxxx
directory /var/ldap/zakalwe.ata
mode 0600
index objectClass eq
index cn,uid pres,eq
index uidNumber eq
index gidNumber eq

cachesize 2000

############## CLIENT ##########

/etc/ldap.conf :

uri ldap://cheradenine.zakalwe.ata/
host cheradenine.zakalwe.ata

rootbinddn cnÞnis,dc=zakalwe,dc=ata
pam_passwd md5

ldap_version 3

base dc=zakalwe,dc=ata
scope sub

pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute gid

nss_base_passwd ou=Personnes,dc=zakalwe,dc=ata
nss_base_shadow ou=Personnes,dc=zakalwe,dc=ata
nss_base_group ou=Groupe,dc=zakalwe,dc=ata

--------------------

/etc/nsswitch.conf :

passwd: files ldap
shadow: files ldap
group: files ldap

hosts: files dns

bootparams: nisplus [NOTFOUND=return] files

ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files

netgroup: nisplus

publickey: nisplus

automount: files nisplus
aliases: files nisplus

############### Fichiers LDIF #########

J'ai créé les fichiers (base.ldif, groupe.ldif, passwd.ldif) sur le serveur
avec les scripts de migration de PADL, puis je les ai intégrés dans la base
avec ldapadd après avoir supprimé les groupes et utilisateurs inutiles
(apache, bin, daemon, etc...)

base.ldif :

dn: dc=zakalwe,dc=ata
dc: zakalwe
objectClass: top
objectClass: domain

dn: ou=Personnes,dc=zakalwe,dc=ata
ou: Personnes
objectClass: top
objectClass: organizationalUnit

dn: ou=Groupe,dc=zakalwe,dc=ata
ou: Groupe
objectClass: top
objectClass: organizationalUnit

------------------

groupe.ldif :

dn: cn=root,ou=Groupe,dc=zakalwe,dc=ata
objectClass: posixGroup
objectClass: top
cn: root
userPassword: {crypt}x
gidNumber: 0

dn: cnÞnis,ou=Groupe,dc=zakalwe,dc=ata
objectClass: posixGroup
objectClass: top
cn: denis
userPassword: {crypt}x
gidNumber: 501

dn: cn=marcel,ou=Groupe,dc=zakalwe,dc=ata
objectClass: posixGroup
objectClass: top
cn: marcel
userPassword: {crypt}*
gidNumber: 1001

etc...

-----------

passwd.ldif :

dn: uid=root,ou=Personnes,dc=zakalwe,dc=ata
uid: root
cn: root
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}xxxxxxxxxxxxxxxxxxxxxxx
shadowLastChange: 12550
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 0
gidNumber: 0
homeDirectory: /root
gecos: root

dn: uidÞnis,ou=Personnes,dc=zakalwe,dc=ata
uid: denis
cn: denis
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}xxxxxxxxxxxxxxxxxxxxxxxx
shadowLastChange: 12642
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 501
homeDirectory: /home/denis

dn: uid=marcel,ou=Personnes,dc=zakalwe,dc=ata
uid: marcel
cn: Marcel Durat
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}xxxxxxxxxxxxxxxxxxxxxx
shadowLastChange: 12688
shadowMax: 32767
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/marcel
gecos: Marcel Durat

etc....

-------------

/etc/pam.d/system-auth :

#%PAM-1.0

auth required pam_env.so
auth required pam_nologin.so
auth sufficient pam_ldap.so
auth sufficient pam_unix.so likeauth nullok use_first_pass
auth required pam_deny.so

account sufficient pam_ldap.so
account required pam_unix.so

password required pam_cracklib.so retry=3 minlen=2 dcredit=0
ucredit=0
password sufficient pam_unix.so nullok use_authtok md5 shadow
password required pam_deny.so

session required pam_limits.so
session required pam_unix.so
session required pam_mkhomedir.so
Avatar
Raphaël 'SurcouF' Bordet

Ça y est, j'ai tout repris à 0, et ça marche enfin, sans que je trouve
exactement d'où venait le problème. J'envoie quand même mes fichiers de
configurations, pour savoir s'il y a des optimisations à faire.

Un grand merci pour ton aide.

Denis

Voici mes fichiers de configurations, sachant que la machine
cheradenine.zakalwe.ata est le serveur, et algernon.zakalwe.ata est le
client :

############# SERVEUR #############

/etc/openldap/slapd.conf :

# section globale

include /usr/share/openldap/schema/core.schema
include /usr/share/openldap/schema/cosine.schema
include /usr/share/openldap/schema/nis.schema

loglevel 296
pidfile /var/run/ldap/slapd.pid
argsfile /var/run/ldap/slapd.args

TLSCipherSuite HIGH
TLSCertificateFile /etc/ssl/openldap/slapd-cert.pem
TLSCertificateKeyFile /etc/ssl/openldap/slapd-cle.pem

password-hash {SSHA}

# section base de données

database bdb
suffix "dc=zakalwe,dc=ata"
rootdn "cnÞnis,dc=zakalwe,dc=ata"
rootpw {SSHA}xxxxxxxxxxxxxxxxxxxxxxx
directory /var/ldap/zakalwe.ata
mode 0600
index objectClass eq
index cn,uid pres,eq
index uidNumber eq
index gidNumber eq

cachesize 2000


Rien à redire sinon qu'il faudrait néanmoins définir quelques ACLs:

access to attribute=userPassword
by dn="cnÞnis,dc=zakalwe,dc=ata" write
by anonymous auth
by self write
by * none

Sans quoi, n'importe qui serait à même de pouvoir lire le champ
userPassword...

--
Raphaël 'SurcouF' Bordet
http://debianfr.net/ | surcouf at debianfr dot net

Avatar
Denis
Merci pour tout.

Denis