J'en suis à regarger dans les sources de CVS et dans le fichier
src/server.c, ma requête passe par la fonction "switch_to_user" qui va
regarder avec la fonction C *getpwnam* si l'utilisateur LDAP existe dans le
fichier /etc/passwd ou bien sur il n'existe pas puisqu'il est dans le LDAP.
J'en suis à regarger dans les sources de CVS et dans le fichier
src/server.c, ma requête passe par la fonction "switch_to_user" qui va
regarder avec la fonction C *getpwnam* si l'utilisateur LDAP existe dans le
fichier /etc/passwd ou bien sur il n'existe pas puisqu'il est dans le LDAP.
J'en suis à regarger dans les sources de CVS et dans le fichier
src/server.c, ma requête passe par la fonction "switch_to_user" qui va
regarder avec la fonction C *getpwnam* si l'utilisateur LDAP existe dans le
fichier /etc/passwd ou bien sur il n'existe pas puisqu'il est dans le LDAP.
Je cherche à utiliser PAM avec CVS (version 1.12.2 donc la dernière hors
dev-cvs). Mais si l'authentification se déroule bien (avec LDAP), lors d'un
*checkout* j'ai l'erreur suivante:
Fatal error, aborting.
monuser: no such system user
J'en suis à regarger dans les sources de CVS et dans le fichier
src/server.c, ma requête passe par la fonction "switch_to_user" qui va
regarder avec la fonction C *getpwnam* si l'utilisateur LDAP existe dans le
fichier /etc/passwd ou bien sur il n'existe pas puisqu'il est dans le LDAP.
Soit il y a quelque chose que je ne comprends pas pour utiliser CVS avec PAM
(et LDAP) soit il y a un bogue. Est-ce c'est vraiment possible d'utiliser
ces 3 programmes ensembles ?
Je cherche à utiliser PAM avec CVS (version 1.12.2 donc la dernière hors
dev-cvs). Mais si l'authentification se déroule bien (avec LDAP), lors d'un
*checkout* j'ai l'erreur suivante:
Fatal error, aborting.
monuser: no such system user
J'en suis à regarger dans les sources de CVS et dans le fichier
src/server.c, ma requête passe par la fonction "switch_to_user" qui va
regarder avec la fonction C *getpwnam* si l'utilisateur LDAP existe dans le
fichier /etc/passwd ou bien sur il n'existe pas puisqu'il est dans le LDAP.
Soit il y a quelque chose que je ne comprends pas pour utiliser CVS avec PAM
(et LDAP) soit il y a un bogue. Est-ce c'est vraiment possible d'utiliser
ces 3 programmes ensembles ?
Je cherche à utiliser PAM avec CVS (version 1.12.2 donc la dernière hors
dev-cvs). Mais si l'authentification se déroule bien (avec LDAP), lors d'un
*checkout* j'ai l'erreur suivante:
Fatal error, aborting.
monuser: no such system user
J'en suis à regarger dans les sources de CVS et dans le fichier
src/server.c, ma requête passe par la fonction "switch_to_user" qui va
regarder avec la fonction C *getpwnam* si l'utilisateur LDAP existe dans le
fichier /etc/passwd ou bien sur il n'existe pas puisqu'il est dans le LDAP.
Soit il y a quelque chose que je ne comprends pas pour utiliser CVS avec PAM
(et LDAP) soit il y a un bogue. Est-ce c'est vraiment possible d'utiliser
ces 3 programmes ensembles ?
Je suggère d'essayer de faire "getent passwd <ton user>", par exemple
"getent passwd toto". Cela appellera la même fonction (getpwnam), et
vérifiera ainsi si tout se passe bien.
Les bibliothèques clientes LDAP
n'ont pas forcément le même comportement lorsqu'elles sont appelées
en root ou en user, il faut faire l'essai du getent en utilisateur
non-privilégié ainsi qu'en root.
Je suggère d'essayer de faire "getent passwd <ton user>", par exemple
"getent passwd toto". Cela appellera la même fonction (getpwnam), et
vérifiera ainsi si tout se passe bien.
Les bibliothèques clientes LDAP
n'ont pas forcément le même comportement lorsqu'elles sont appelées
en root ou en user, il faut faire l'essai du getent en utilisateur
non-privilégié ainsi qu'en root.
Je suggère d'essayer de faire "getent passwd <ton user>", par exemple
"getent passwd toto". Cela appellera la même fonction (getpwnam), et
vérifiera ainsi si tout se passe bien.
Les bibliothèques clientes LDAP
n'ont pas forcément le même comportement lorsqu'elles sont appelées
en root ou en user, il faut faire l'essai du getent en utilisateur
non-privilégié ainsi qu'en root.
Le compte monuser n'est pas dans le fichier /etc/passwd car il est dans le
LDAP. Donc, getent ne le retrouve pas. L'intérêt pour moi de LDAP est de
centraliser l'ensemble des informations concernant les comptes dans une même
base modifiable très facilement.
Comme je l'indiquais, l'authentification CVS sur le LDAP se déroule bien.
Au niveau CVS, cet utilisateur peut-être celui indiqué dans le fichier
CVSROOT/passwd (3ème paramètre):
<login>:<password>:<systUser>
J'ai ajouté les traces d'OpenLDAP et toutes les informations sont
parfaitement récupérées par PAM puis CVS (j'ai ajouté des traces dans le
code de CVS pour suivre le cheminement). Le problème, c'est qu'une fois
authentifié, CVS essaye de basculer sur un utilisateur système correspondant
à l'utilisateur qu'il a authentifié.
Mais comme l'authentification se déroule maintenant avec PAM/LDAP, je ne
peux pas indiquer quel est l'utilisateur système à utiliser puisque le
fichier CVSROOT/passwd n'est plus utilisé. Donc, quand CVS ne trouve pas
d'utilisateur système, il recherche l'utilisateur qui cherche à
s'authentifier, sauf que comme je l'ai dit, il n'existe pas dans le fichier
/etc/passwd :-(
J'ai l'impression que le support de PAM sur CVS fonctionne surtout avec
pam_unix mais que le support de pam_ldap n'est pas complet ce qui est plus
qu'étonnant quand on sait que CVS est utilisé par une très grande
communauté.
Le compte monuser n'est pas dans le fichier /etc/passwd car il est dans le
LDAP. Donc, getent ne le retrouve pas. L'intérêt pour moi de LDAP est de
centraliser l'ensemble des informations concernant les comptes dans une même
base modifiable très facilement.
Comme je l'indiquais, l'authentification CVS sur le LDAP se déroule bien.
Au niveau CVS, cet utilisateur peut-être celui indiqué dans le fichier
CVSROOT/passwd (3ème paramètre):
<login>:<password>:<systUser>
J'ai ajouté les traces d'OpenLDAP et toutes les informations sont
parfaitement récupérées par PAM puis CVS (j'ai ajouté des traces dans le
code de CVS pour suivre le cheminement). Le problème, c'est qu'une fois
authentifié, CVS essaye de basculer sur un utilisateur système correspondant
à l'utilisateur qu'il a authentifié.
Mais comme l'authentification se déroule maintenant avec PAM/LDAP, je ne
peux pas indiquer quel est l'utilisateur système à utiliser puisque le
fichier CVSROOT/passwd n'est plus utilisé. Donc, quand CVS ne trouve pas
d'utilisateur système, il recherche l'utilisateur qui cherche à
s'authentifier, sauf que comme je l'ai dit, il n'existe pas dans le fichier
/etc/passwd :-(
J'ai l'impression que le support de PAM sur CVS fonctionne surtout avec
pam_unix mais que le support de pam_ldap n'est pas complet ce qui est plus
qu'étonnant quand on sait que CVS est utilisé par une très grande
communauté.
Le compte monuser n'est pas dans le fichier /etc/passwd car il est dans le
LDAP. Donc, getent ne le retrouve pas. L'intérêt pour moi de LDAP est de
centraliser l'ensemble des informations concernant les comptes dans une même
base modifiable très facilement.
Comme je l'indiquais, l'authentification CVS sur le LDAP se déroule bien.
Au niveau CVS, cet utilisateur peut-être celui indiqué dans le fichier
CVSROOT/passwd (3ème paramètre):
<login>:<password>:<systUser>
J'ai ajouté les traces d'OpenLDAP et toutes les informations sont
parfaitement récupérées par PAM puis CVS (j'ai ajouté des traces dans le
code de CVS pour suivre le cheminement). Le problème, c'est qu'une fois
authentifié, CVS essaye de basculer sur un utilisateur système correspondant
à l'utilisateur qu'il a authentifié.
Mais comme l'authentification se déroule maintenant avec PAM/LDAP, je ne
peux pas indiquer quel est l'utilisateur système à utiliser puisque le
fichier CVSROOT/passwd n'est plus utilisé. Donc, quand CVS ne trouve pas
d'utilisateur système, il recherche l'utilisateur qui cherche à
s'authentifier, sauf que comme je l'ai dit, il n'existe pas dans le fichier
/etc/passwd :-(
J'ai l'impression que le support de PAM sur CVS fonctionne surtout avec
pam_unix mais que le support de pam_ldap n'est pas complet ce qui est plus
qu'étonnant quand on sait que CVS est utilisé par une très grande
communauté.
La fonction *getpwnam* appartient plutôt à l'API de la libc et non libpam.
Il ne passe donc pas par la couche PAM (/etc/pam.d/cvs) mais par la couche
NSS (/etc/nsswitch.conf).
As tu bien du _ldap_ dans l'entrée _passwd_ ce dernier fichier ?
La fonction *getpwnam* appartient plutôt à l'API de la libc et non libpam.
Il ne passe donc pas par la couche PAM (/etc/pam.d/cvs) mais par la couche
NSS (/etc/nsswitch.conf).
As tu bien du _ldap_ dans l'entrée _passwd_ ce dernier fichier ?
La fonction *getpwnam* appartient plutôt à l'API de la libc et non libpam.
Il ne passe donc pas par la couche PAM (/etc/pam.d/cvs) mais par la couche
NSS (/etc/nsswitch.conf).
As tu bien du _ldap_ dans l'entrée _passwd_ ce dernier fichier ?