Page 3 of 5

Re: Serveur OpenLDAP Nas4Free

Posted: 02 Jan 2015 16:50
by laster13
Bonjour,

Moi aussi j'avais tenté de linker les fichiers de configuration dans la jail mais j'obtenais toujours les mêmes messages d'erreur et notamment celui ci

Code: Select all

54a69bf1 => key_read
54a69bf1 <= mdb_index_read: failed (-30798)
Effectivement, à la base les 4 fichiers suivants sont déjà linkés dans "/usr/local/etc" de la manière dont tu le décrits
/usr/local/etc/ldap.conf=>/var/etc/ldap.conf
/usr/local/etc/ldap.secret=>/var/etc/ldap.secret
/usr/local/etc/nss_ldap.conf=>/var/etc/ldap.conf
/usr/local/etc/nss_ldap.secret=>/var/etc/ldap.secret
Par défaut le chmod du fichier ldap.conf doit être à 644 pour fonctionner, hors avec la commande "ln -s", le chmod se met à 755 et impossible de le changer. J'en ai déduit que c'est pour cette raison que cela ne fonctionnait pas, mais ce n'est qu'une supposition.

Par contre en générant les fichiers ldap.conf et ldap.secret dans "/usr/local/etc/openldap" le chmod se met bien à 644. Le log est différent notamment à cet endroit

Avec "ln-s"

Code: Select all

54a69bf1 mdb_search_candidates: id=0 first=0 last=0
En modifiant le fichier "/etc/rc.d/ldap"

Code: Select all

54a6b712 mdb_search_candidates: id=-1 first=1 last=-1
velivole18 wrote:/usr/local/etc/nss_ldap.conf=>/var/etc/ldap.conf
/usr/local/etc/nss_ldap.secret=>/var/etc/ldap.secret
Là par contre, je sais pas comment faire, si je dois ou pas les linker pour les retrouver également dans "/usr/local/etc/openldap" , je vais tester et je suis entièrement d'accord avec toi concernant " pam_ldap et nss_ldap", je vais me pencher là dessus.

Je vais tenter de les compiler

Code: Select all

cd /usr/ports/security/pam_ldap

Code: Select all

make install clean

Code: Select all

cd /usr/ports/net/nss_ldap

Code: Select all

make install clean
Je te dis combien de temps il m'aura fallu, mais peu être qu'il est possible d'installer les packages déjà précompiler. La compilation a démarré, je te tiens au courant

Edit: durée de la compilation pour les 2 packages :25 mn

Re: Serveur OpenLDAP Nas4Free

Posted: 02 Jan 2015 20:54
by laster13
Bonsoir,

Est ce que tu pourrais regarder ce log et me dire ce que tu en pense stp?

Code: Select all

54a6f6fb slap_listener_activate(6):
54a6f6fb >>> slap_listener(ldap://192.168.1.33/)
54a6f6fb connection_get(11): got connid=1000
54a6f6fb connection_read(11): checking for input on id=1000
ber_get_next
ber_get_next: tag 0x30 len 12 contents:
54a6f6fb op tag 0x60, time 1420228347
ber_get_next
54a6f6fb conn=1000 op=0 do_bind
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
54a6f6fb >>> dnPrettyNormal: <>
54a6f6fb <<< dnPrettyNormal: <>, <>
54a6f6fb do_bind: version=3 dn="" method=128
54a6f6fb send_ldap_result: conn=1000 op=0 p=3
54a6f6fb send_ldap_response: msgid=1 tag=97 err=0
ber_flush2: 14 bytes to sd 11
54a6f6fb do_bind: v3 anonymous bind
54a6f6fb connection_get(11): got connid=1000
54a6f6fb connection_read(11): checking for input on id=1000
ber_get_next
ber_get_next: tag 0x30 len 56 contents:
54a6f6fb op tag 0x63, time 1420228347
ber_get_next
54a6f6fb conn=1000 op=1 do_search
ber_scanf fmt ({miiiib) ber:
54a6f6fb >>> dnPrettyNormal: <dc=famille,dc=local>
54a6f6fb <<< dnPrettyNormal: <dc=famille,dc=local>, <dc=famille,dc=local>
ber_scanf fmt (m) ber:
ber_scanf fmt ({M}}) ber:
54a6f6fb ==> limits_get: conn=1000 op=1 self="[anonymous]" this="dc=famille,dc=local"
54a6f6fb => bdb_search
54a6f6fb bdb_dn2entry("dc=famille,dc=local")
54a6f6fb => bdb_dn2id("dc=famille,dc=local")
54a6f6fb <= bdb_dn2id: got id=0x1
54a6f6fb entry_decode: "dc=famille,dc=local"
54a6f6fb <= entry_decode(dc=famille,dc=local)
54a6f6fb search_candidates: base="dc=famille,dc=local" (0x00000001) scope=2
54a6f6fb => bdb_dn2idl("dc=famille,dc=local")
54a6f6fb => bdb_presence_candidates (objectClass)
54a6f6fb bdb_search_candidates: id=-1 first=1 last=6
54a6f6fb => send_search_entry: conn 1000 dn="dc=famille,dc=local"
ber_flush2: 104 bytes to sd 11
54a6f6fb <= send_search_entry: conn 1000 exit.
54a6f6fb entry_decode: "cn=admin,dc=famille,dc=local"
54a6f6fb <= entry_decode(cn=admin,dc=famille,dc=local)
54a6f6fb => bdb_dn2id("cn=admin,dc=famille,dc=local")
54a6f6fb <= bdb_dn2id: got id=0x2
54a6f6fb => send_search_entry: conn 1000 dn="cn=admin,dc=famille,dc=local"
ber_flush2: 91 bytes to sd 11
54a6f6fb <= send_search_entry: conn 1000 exit.
54a6f6fb entry_decode: "ou=users,dc=famille,dc=local"
54a6f6fb <= entry_decode(ou=users,dc=famille,dc=local)
54a6f6fb => bdb_dn2id("ou=users,dc=famille,dc=local")
54a6f6fb <= bdb_dn2id: got id=0x3
54a6f6fb => send_search_entry: conn 1000 dn="ou=users,dc=famille,dc=local"
ber_flush2: 91 bytes to sd 11
54a6f6fb <= send_search_entry: conn 1000 exit.
54a6f6fb entry_decode: "ou=groups,dc=famille,dc=local"
54a6f6fb <= entry_decode(ou=groups,dc=famille,dc=local)
54a6f6fb => bdb_dn2id("ou=groups,dc=famille,dc=local")
54a6f6fb <= bdb_dn2id: got id=0x4
54a6f6fb => send_search_entry: conn 1000 dn="ou=groups,dc=famille,dc=local"
ber_flush2: 93 bytes to sd 11
54a6f6fb <= send_search_entry: conn 1000 exit.
54a6f6fb entry_decode: "ou=password,dc=famille,dc=local"
54a6f6fb <= entry_decode(ou=password,dc=famille,dc=local)
54a6f6fb => bdb_dn2id("ou=password,dc=famille,dc=local")
54a6f6fb <= bdb_dn2id: got id=0x5
54a6f6fb => send_search_entry: conn 1000 dn="ou=password,dc=famille,dc=local"
ber_flush2: 97 bytes to sd 11
54a6f6fb <= send_search_entry: conn 1000 exit.
54a6f6fb entry_decode: "ou=computers,dc=famille,dc=local"
54a6f6fb <= entry_decode(ou=computers,dc=famille,dc=local)
54a6f6fb => bdb_dn2id("ou=computers,dc=famille,dc=local")
54a6f6fb <= bdb_dn2id: got id=0x6
54a6f6fb => send_search_entry: conn 1000 dn="ou=computers,dc=famille,dc=local"
ber_flush2: 99 bytes to sd 11
54a6f6fb <= send_search_entry: conn 1000 exit.
54a6f6fb send_ldap_result: conn=1000 op=1 p=3
54a6f6fb send_ldap_response: msgid=2 tag=101 err=0
ber_flush2: 14 bytes to sd 11
54a6f6fb connection_get(11): got connid=1000
54a6f6fb connection_read(11): checking for input on id=1000
ber_get_next
ber_get_next: tag 0x30 len 5 contents:
54a6f6fb op tag 0x42, time 1420228347
ber_get_next
54a6f6fb ber_get_next on fd 11 failed errno=0 (No error: 0)
54a6f6fb conn=1000 op=2 do_unbind
54a6f6fb connection_close: conn=1000 sd=11


Re: Serveur OpenLDAP Nas4Free

Posted: 02 Jan 2015 20:59
by velivole18
Bonsoir,

Ben disons comme cela qu'OpenLdap à l'air heureux et qu'il à l'air de trouver les clés.
C'est obtenu à partir d'une action dans le webgui de Nas4Free ou après une commande en ligne ?
Que dit la commande ldapsearch après cela ?

Sinon, en passant, comment on fait pour refaire une compilation depuis zéro après avoir déjà compilé une première fois un truc ?
Ça m'évitera de supprimer ma jail et de la refaire complètement.

Merci.

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 02 Jan 2015 21:04
by velivole18
Bonsoir,

Sinon aussi, j'ai vu qu'il existe une "nss-pam-ldapd-0.8.13_1", en plus de "pam_ldap" et "nss_ldap".
je sais pas si ça remplace les 2 ou si c'est en plus ...

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 02 Jan 2015 21:32
by velivole18
Bonsoir,

2 liens intéressants pour pam et nss :
Authentification Linux avec LDAP
Guide pratique de l'authentification des utilisateurs

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 03 Jan 2015 09:12
by laster13
Bonjour,

Merci pour les liens je vais les potasser ;)

Pour avoir ce log, je suis passé par une full install de nas4free et je n'ai pas crée de jail. J'ai simplement installer le package précompilé à la racine de nas4free

Code: Select all

pkg_add -r openldap24-server
Une fois l'install faite j'ai effacé le fichier ldap.conf qui se trouvait "usr/local/etc/openldap/" et j'ai crée le lien symbolique suivant

Code: Select all

ln -s /var/etc/ldap.conf /usr/local/etc/openldap/ldap.conf
J'ai ensuite alimenté la base de donnée de la même manière que tu le proposes et je lance le serveur
c'est la commande ldapsearch qui génére le log que je t'ai mis plus haut, je n'ai pas eu le temps de tester avec l'ajout d'un utilisateur et là je m'absente pour la matinée donc je pourrai pas le faire non plus.

C'est clairement le meilleur log que j'ai eu jusqu'à présent.
bdb_search_candidates: id=-1 first=1 last=6
le nombre 6 correspond aux nombres d'entrées que j'ai faites dans la base avec ce fichier enfin je pense...
dn: dc=famille,dc=local
objectclass: dcObject
objectclass: organization
o: famille
dc: famille

dn: cn=admin,dc=famille,dc=local
objectclass: organizationalRole
cn: admin

dn: ou=users,dc=famille,dc=local
objectClass: top
objectClass: organizationalUnit
ou: users
description: utilisateur

dn: ou=groups,dc=famille,dc=local
objectClass: top
objectClass: organizationalUnit
ou: groups
description: groupe

dn: ou=password,dc=famille,dc=local
objectClass: top
objectClass: organizationalUnit
ou: password
description: groupe

dn: ou=computers,dc=famille,dc=local
objectClass: top
objectClass: organizationalUnit
ou: computers
description: groupe
Jusqu'à présent on on avait:
mdb_search_candidates: id=-1 first=1 last=-1
ou pire
mdb_search_candidates: id=0 first=0 last=0
J'aurai du commencer par là plutôt que d'essayer de le faire fonctionner dans une jail et en plus tu me l'avais suggéré :oops: méa culpa

Bon je pense qu'on peut tenter de poursuivre nos tentatives sur une full et si on arrive à le faire fonctionner, à ce moment là, je tacherai d'adapter son fonctionnement pour une version embedded mais en tout cas l'avantage de la full c'est que tout ce dont on a besoin notamment "pam_ldap" et "nss_ldap" sont déjà installés. Qu'en penses tu ?

Re: Serveur OpenLDAP Nas4Free

Posted: 03 Jan 2015 10:39
by velivole18
Bonjour,

Je pense que tout cela est super.
Je me demande juste qu'elle est la différence entre OpenLdap dans une jail et OpenLdap directement dans Nas4Free Full.
Peut-être peut-on faire le test avec une jail full blindée au max. ?
Je vais faire des tests dans ce sens là.
Quand tu as le temps, tu peux aller plus loin dans la solution que tu viens de trouver.
Passes pas tout ton temps là dessus !
Moi aussi je me suis amené des devoirs de mon boulot pour ces congés de noël que je n'ai toujours pas fait et que je dois rendre lundi matin.
J'ai fait beaucoup de Nas4Free et peu d'autre chose, comme un collégien qui attend le dimanche soir pour faire ses devoirs ...
Je t'avoue que je vais continuer ces tests un peu plus de façon dispersée à partir de lundi, mais sans abandonner pour autant.
Je te tiens au courant.
Encore merci à toi.

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 03 Jan 2015 15:45
by velivole18
Bonjour,

A priori, dans une jail "full", il y a déjà d'installé pam et nss.
Je fais le test.
J'ai détruit mes jails et recréé une nouvelle toute propre en full.
Je vais recompilé OpenLdap et voir.

A+
Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 04 Jan 2015 00:43
by velivole18
Bonsoir,

Après suppression de mes jails et re-création d'une jail propre, mon serveur Nas4Free reboot de façon intempestive.
Ce n'est pas la 1ère fois que cela m'arrive ...
Bon, j'ai retrouvé ma jail propre, mais je peine à me connecter en ssh ne serait-ce qu'à Nas4Free.
Le mot de passe est accepté, et je reste en attente de l'arrivée du prompt.
Après un certain temps, j'obtiens le prompt après avoir fait un Ctrl-C.
Très bizarre tout cela.
Peut-être va-t-il falloir que je ré-install Nas4Free complètement ???

Bon, sinon, au niveau OpenLdap, quelques constatations après ton dernier post :
J'ai comparé Nas4Free avant et après lancement du service Ldap.
Il apparaît que :

Code: Select all

nas4free-labo: etc # ll
total 100
-rw-r--r--  1 root  wheel   197 Jan  3 15:57 crontab
-rw-r--r--  1 root  wheel    59 Jan  3 15:48 exports
-rw-r--r--  1 root  wheel   218 Jan  3 15:48 hosts
drwxr-xr-x  2 root  wheel   512 Jan  3 15:48 iscsi/
-rw-r--r--  1 root  wheel     0 Jan  3 23:20 ldap.conf
-rw-------  1 root  wheel     0 Jan  3 23:20 ldap.secret
-rw-r--r--  1 root  wheel  3317 Jan  3 15:57 lighttpd.conf
-rw-r--r--  1 root  wheel   223 Jan  3 15:57 mdnsresponder.conf
-rw-------  1 root  wheel   196 Jan  3 15:55 msmtp.conf
drwxr-xr-x  2 root  wheel   512 Jan  3 15:48 netatalk/
-rw-r--r--  1 root  wheel   179 Jan  3 23:20 nsswitch.conf
-rw-------  1 root  wheel    17 Jan  3 15:55 nut.conf
drwxr--r--  2 root  wheel   512 Jan  3 15:48 pam.d/
drwxr-xr-x  2 root  wheel   512 Jan  3 15:48 private/
-rw-r--r--  1 root  wheel  1277 Jan  3 15:55 proftpd.conf
-rw-r--r--  1 root  wheel    65 Jan  3 15:48 resolv.conf
-rw-r--r--  1 root  wheel   933 Jan  3 23:20 smb.conf
drwxr-xr-x  2 root  wheel   512 Jan  3 15:57 ssh/
drwxr-xr-x  3 root  wheel   512 Jan  3 15:48 ssl/
-rw-r--r--  1 root  wheel   332 Jan  3 15:48 syslog.conf
-rw-------  1 root  wheel    40 Jan  3 15:55 ups.conf
-rw-------  1 root  wheel    61 Jan  3 15:55 upsd.conf
-rw-------  1 root  wheel   101 Jan  3 15:55 upsd.users
-rw-------  1 root  wheel   620 Jan  3 15:57 upsmon.conf
-rw-------  1 root  wheel   383 Jan  3 15:57 upssched.conf
-rw-r--r--  1 root  wheel    14 Jan  3 15:55 websrv-uploaddir.conf
-rw-r--r--  1 root  wheel  3679 Jan  3 15:55 websrv.conf
nas4free-labo: etc # 
nas4free-labo: etc # ll
total 108
-rw-r--r--  1 root  wheel   197 Jan  3 15:57 crontab
-rw-r--r--  1 root  wheel    59 Jan  3 15:48 exports
-rw-r--r--  1 root  wheel   218 Jan  3 15:48 hosts
drwxr-xr-x  2 root  wheel   512 Jan  3 15:48 iscsi/
-rw-r--r--  1 root  wheel   347 Jan  3 23:21 ldap.conf
-rw-------  1 root  wheel     6 Jan  3 23:21 ldap.secret
-rw-r--r--  1 root  wheel  3317 Jan  3 15:57 lighttpd.conf
-rw-r--r--  1 root  wheel   223 Jan  3 15:57 mdnsresponder.conf
-rw-------  1 root  wheel   196 Jan  3 15:55 msmtp.conf
drwxr-xr-x  2 root  wheel   512 Jan  3 15:48 netatalk/
-rw-r--r--  1 root  wheel   187 Jan  3 23:21 nsswitch.conf
-rw-------  1 root  wheel    17 Jan  3 15:55 nut.conf
drwxr--r--  2 root  wheel   512 Jan  3 15:48 pam.d/
drwxr-xr-x  2 root  wheel   512 Jan  3 15:48 private/
-rw-r--r--  1 root  wheel  1277 Jan  3 15:55 proftpd.conf
-rw-r--r--  1 root  wheel    65 Jan  3 15:48 resolv.conf
-rw-r--r--  1 root  wheel  1198 Jan  3 23:21 smb.conf
drwxr-xr-x  2 root  wheel   512 Jan  3 15:57 ssh/
drwxr-xr-x  3 root  wheel   512 Jan  3 15:48 ssl/
-rw-r--r--  1 root  wheel   332 Jan  3 15:48 syslog.conf
-rw-------  1 root  wheel    40 Jan  3 15:55 ups.conf
-rw-------  1 root  wheel    61 Jan  3 15:55 upsd.conf
-rw-------  1 root  wheel   101 Jan  3 15:55 upsd.users
-rw-------  1 root  wheel   620 Jan  3 15:57 upsmon.conf
-rw-------  1 root  wheel   383 Jan  3 15:57 upssched.conf
-rw-r--r--  1 root  wheel    14 Jan  3 15:55 websrv-uploaddir.conf
-rw-r--r--  1 root  wheel  3679 Jan  3 15:55 websrv.conf
nas4free-labo: etc #
les fichiers suivants ont changé entre Nas4Free sans Ldap et avec Ldap dans /var/etc/ :
  • ldap.conf
  • ldap.secret
  • nsswitch.conf
  • smb.conf
  • pam.d/ftp
  • pam.d/login
  • pam.d/netatalk
  • pam.d/sshd
  • pam.d/system
A priori, tout est configuré pour utiliser un serveur OpenLdap via pam et nss.

Ce que je comprends de la chose, après lecture de la page suivante : Q31.Quel est le rôle de l'interface entre les fonctions PAM et surtout Authentification Linux avec LDAP :
pam et nss sont une interface permettant au client d'utiliser les services d'authentification sans se préoccuper de la nature de ces services.
Ce que je comprends, c'est que la base OpenLdap est indépendante de pam et nss qui sont plutôt mis en oeuvre côté client.
Je comprends que cela est architecturé comme ceci :
client /pam+nss ---> serveur Openldap/base Ldap
D'ailleurs à bien regarder les fichiers modifiés suite à l'activation du service Ldap sur Nas4Free, tout est effectivement mis en oeuvre dans ces différents fichiers pour utiliser pam+nss concernant tous les besoins d'authentification de Nas4Free.

Côté serveur OpenLdap, que ce soit dans le man de slapd, de slapd.conf ou de lapd.conf, aucune trace ni de pam, ni de nss.
Ce qui confirmerait que pam et nss ne sont que des couches utilisées côté client.
D'ailleurs pam+nss peuvent être mises en œuvre pas seulement avec un Ldap, puisque ce n'est fait que pour rendre transparent au service client demandeur d'authentification la façon dont l'authentification est réalisée derrière. pam+nss pourraient être utilisées avec autre chose qu'une base Ldap.

Ce qui m'amène à la conclusion que côté Nas4Free qui est donc le client, tout est mis en œuvre pour utiliser une base Ldap via pam+nss.
Il ne manque plus que le serveur OpenLdap, accessible via l"adresse IP renseignée dans le webgui de Nas4Free du service ldap.
Pour moi, il n'y a pas à mettre en oeuvre pam+nss côté serveur.

Donc je m'étonne que OpenLdap fonctionnerait en l'installant directement dans Nas4Free et pas en jail !
Je ne peux que constater que c'est effectivement comme cela d'après tes derniers essais, mais je ne comprends pas pourquoi !
Ou alors, je suis complètement à côté de la plaque, ce qui est fort possible, je l'admets.

J'ai tout de même installé une nouvelle jail en full et dans ce cas là, pam et nss sont installés dans la jail.
Je vais continuer mes réflexions et expériences.

A+

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 04 Jan 2015 00:58
by velivole18
Bonsoir,

Test avec une jail "Full", en reprenant le fichier ldap.conf de Nas4Free, NEGATIF, mêmes problèmes qu'avant au niveau des index !!! :evil:

Je vais me coucher ...

A plus tard.

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 04 Jan 2015 10:58
by velivole18
Bonjour,

En ce dimanche matin bien frais et humide,
j'ai installé en machine virtuelle une Full Nas4Free + pkg_add -r openldap24-server + le link qui va bien pour ldap.conf.
Après avoir paramétré le service ldap de Nas4Free pour constituer un fichier ldap.conf non vide, je lance mon serveur OpenLdap sans problème.

Mais impossible de m'y connecter, même un ldapsearch ne fonctionne pas, je me butte toujours sur le problème :
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

Ah, aussi, il m'a fallut créer le user "ldap" et le groupe "ldap" à la main sous lesquels se lance le serveur OpenLdap, sinon, il ne se lançait pas.

Comment as-tu fait pour pouvoir accéder à OpenLdap sans problème ?

Merci.
Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 04 Jan 2015 12:32
by laster13
Bonjour,

Comme toi j'ai installé pkg_add -r openldap24-server, ensuite j'ai supprimé le fichier ldap.conf qui se trouve dans /usr/local/etc/openldap et ensuite j'ai linké comme ceci:

Code: Select all

ln -s /var/etc/ladp.conf /usr/local/etc/openldap/ldap.conf 
Et effectivement j'ai moi aussi du créer un user ldap

Code: Select all

pw adduser ldap
Cette erreur je l'ai lorsque le serveur openldap n'est pas lancé et que je fais ldapsearch

Code: Select all

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
Je viens de me recréer une full avec virtualbox, je refais la manip et je reviens vers toi ;)

Edit: Cela fonctionne avec le même log que celui que j'ai donné plus haut. A la fin du log, j'ai l'erreur suivante

Code: Select all

ber_get_next on fd 11 failed errno=0 (No error: 0)
Et dans le journal de nas4free, j'ai cette erreur

Code: Select all

slapd[2270]: nss_ldap: could not search LDAP server - Server is unavailable

Re: Serveur OpenLDAP Nas4Free

Posted: 04 Jan 2015 13:19
by laster13
Bonjour,

concernant cette erreur

Code: Select all

slapd[2309]: nss_ldap: could not search LDAP server - Server is unavailable
Donc cette erreur est signalé dans le journal de nas4free comme si le client nous informait que le serveur n'arrive pas à accéder à la base de nas4free

Cette erreur apparait immédiatement dès que je lance le serveur sans même faire ldapsearch ou autre commande et pourtant le serveur fonctionne puisque si ensuite je tape ldapsearch j'arrive au log cité plus haut. Si je me trompe pas "ldapsearch" permet au client de rentrer dans la base d'openldap et cela fonctionne plutôt si on en juge par le log mais j'ai l'impression que le serveur lui n'arrive pas à communiquer avec la base nas4free, ou un truc comme çà en tout cas par rapport au message. J'ai du mal à formaliser ma reflexion mais dis moi ce que tu en penses.

Par ailleurs, je suis tombé sur ce site qui explique comment configurer pam
https://blog.art-of-coding.eu/using-ldap-under-freebsd/

Je vais tenter de suivre les indications concernant les changements à effectuer dans

Code: Select all

/etc/pam.d/system
et

Code: Select all

/etc/pam.d/sshd
peu être une piste

Re: Serveur OpenLDAP Nas4Free

Posted: 04 Jan 2015 13:45
by laster13
Bonjour,
Ce qui m'amène à la conclusion que côté Nas4Free qui est donc le client, tout est mis en œuvre pour utiliser une base Ldap via pam+nss.
Il ne manque plus que le serveur OpenLdap, accessible via l"adresse IP renseignée dans le webgui de Nas4Free du service ldap.
Pour moi, il n'y a pas à mettre en oeuvre pam+nss côté serveur.

Donc je m'étonne que OpenLdap fonctionnerait en l'installant directement dans Nas4Free et pas en jail !
En fait je pense que ce n'est pas openldap qui installe pam+nss, cela est déjà par défaut dans nas4free et je suis d'accord avec toi que c'est le client qui en a besoin, à mon avis pour permettre openldap de rentrer dans la base de nas4free. Et du coup effectivement dans les jails cela n'est pas installé, ce qui nécessite de le faire

Re: Serveur OpenLDAP Nas4Free

Posted: 04 Jan 2015 14:05
by velivole18
Bonjour,

L'erreur que tu obtiens n'est pas de la même nature que la mienne.
Ce qui est bizarre, c'est que les verbes d'admin de Ldap sont dans /usr/local/bin et ce chemin est bien dans mon PATH, mais quand je demande la commande ldapsearch, il ne la trouve pas.

Code: Select all

nas4free-virtuel: openldap # echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
nas4free-virtuel: openldap # ldapsearch
ldapsearch: Command not found.
nas4free-virtuel: openldap # /usr/local/bin/ldapsearch
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
nas4free-virtuel: openldap # 
Mon serveur OpenLdap est bien lancé :

Code: Select all

nas4free-virtuel: openldap # ps -ax
 PID TT  STAT      TIME COMMAND
   0 ??  DLs    0:02.78 [kernel]
   1 ??  ILs    0:00.02 /sbin/init --
   2 ??  DL     0:00.00 [crypto]
   3 ??  DL     0:00.00 [crypto returns]
   4 ??  DL     0:00.00 [ctl_thrd]
   5 ??  DL     0:00.15 [zfskern]
   6 ??  DL     0:00.00 [sctp_iterator]
   7 ??  DL     0:00.00 [xpt_thrd]
   8 ??  DL     0:00.02 [pagedaemon]
   9 ??  DL     0:00.00 [vmdaemon]
  10 ??  DL     0:00.00 [audit]
  11 ??  RL   221:47.96 [idle]
  12 ??  WL     0:16.29 [intr]
  13 ??  DL     0:01.40 [geom]
  14 ??  DL     0:00.81 [yarrow]
  15 ??  DL     0:00.82 [usb]
  16 ??  DL     0:00.00 [pagezero]
  17 ??  DL     0:00.12 [bufdaemon]
  18 ??  DL     0:00.70 [syncer]
  19 ??  DL     0:00.07 [vnlru]
  20 ??  DL     0:00.18 [softdepflush]
1444 ??  Is     0:00.01 /sbin/devd
1551 ??  Ss     0:00.04 /usr/sbin/syslogd -8 -ss -f /var/etc/syslog.conf
1566 ??  Ss     0:00.04 /usr/sbin/rpcbind
1595 ??  Is     0:00.00 /usr/sbin/mountd -r
1606 ??  Is     0:00.03 nfsd: master (nfsd)
1608 ??  S      0:00.05 nfsd: server (nfsd)
1610 ??  Ss     0:00.01 /usr/sbin/rpc.statd
1613 ??  Ss     0:00.01 /usr/sbin/rpc.lockd
1648 ??  Ss     0:00.90 /usr/local/sbin/VBoxService --enable-timesync --disable-vminfo
1827 ??  Is     0:00.00 /usr/sbin/sshd -f /var/etc/ssh/sshd_config -h /var/etc/ssh/ssh_host_dsa_key
1865 ??  Is     0:00.03 /usr/sbin/cron -s
1916 ??  Is     0:00.10 /usr/local/bin/mDNSResponderPosix -b -f /var/etc/mdnsresponder.conf
3444 ??  S      0:01.10 /usr/local/sbin/lighttpd -f /var/etc/lighttpd.conf -m /usr/local/lib/lighttpd
3992 ??  Ss     0:00.41 sshd: root@pts/0 (sshd)
4190 ??  Is     0:01.74 sshd: root@pts/1 (sshd)
2057 v0  Is     0:00.01 login [pam] (login)
2060 v0  I      0:00.01 -tcsh (csh)
2069 v0  I+     0:00.01 /bin/sh /etc/rc.initial
2058 v1  Is+    0:00.00 /usr/libexec/getty Pc ttyv1
2059 v2  Is+    0:00.00 /usr/libexec/getty Pc ttyv2
4024  0  Rs     0:00.06 -tcsh (csh)
5045  0  R+     0:00.00 ps -ax
4192  1  Is     0:00.08 -tcsh (csh)
5015  1  I+     0:00.00 /bin/sh ./ldap.sh start
5016  1  I+     0:00.01 /bin/sh /usr/local/etc/rc.d/slapd start
5025  1  I+     0:00.03 /usr/local/libexec/slapd -V -h ldap://192.168.0.70/ -d 1 -u ldap -g ldap
nas4free-virtuel: openldap # 
Mais j'ai bien toujours la même erreur :

Code: Select all

nas4free-virtuel: openldap # /usr/local/bin/ldapsearch
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
nas4free-virtuel: openldap #
Un peu plus tard ...

J'ai modifié la définition de liaison dans le service Ldap de Nas4Free dans le webgui et j'ai mis ceci :
ldapi://%2fvar%2frun%2fopenldap%2fldapi/, ldap://192.168.0.70/
J'ai fait la même chose dans le fichier /etc/rc.conf :

Code: Select all

slapd_enable="YES"
slapd_flags='-V -h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://192.168.0.70/" -d 1'
slapd_sockets="/var/run/openldap/ldapi"
et à priori, Nas4Free communique bien maintenant avec OpenLdap !
Mais j'ai l'ancienne erreur qui vient du type de la base Ldap utilisée :
54a93905 <= bdb_dn2id: get failed: DB_NOTFOUND: No matching key/data pair found (-30989)

Question : est-il possible d'installer dans Nas4Free Full OpenLdap en le compilant, comme on fait dans la jail ?

Merci.
Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 04 Jan 2015 14:18
by velivole18
Bonjour,

Concernant nos cogitations sur pam+nss, tu es d'accord avec moi que ceci est mis en œuvre par le client, qui pour nous est soit directement Nas4Free, et là, tout est installé, soit nos propres lignes de commandes.
Pour nos propres lignes de commandes, soit nous sommes directement sous Nas4Free, et donc nous sommes dans un environnement possédant déjà pam+nss, soit nous sommes en jail et là il nous faut installer pam+nss (et encore, je ne suis pas sûr que ce soit indispensable !).
En fait, le serveur OpenLdap pourrait être un serveur extérieur hébergé sur une autre machine d'un autre type (debian, windows, ...).
Je continue à croire que le serveur slapd ne connaît en rien les couches pam+nss, qu'il n'en a pas besoin, et que ce service pourrait déjà exister ailleurs sur une autre plateforme.
Soit il est sur une autre plateforme et la seule façon d'y accéder est via une adresse IP, soit il est local au client et on peut y accéder en socket de type mémoire partagée (domain Unix), ce que j'ai mis en place dans mon dernier post avec "ldapi" et ce qui à plutôt l'air de plaire à Nas4Free, tout du moins pour établir une communication.
Es-tu d'accord avec ce raisonnement ?
En tout cas, pas beaucoup d'aide du côté anglo-saxon ...

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 04 Jan 2015 15:26
by laster13
Bonjour,
velivole18 wrote:Concernant nos cogitations sur pam+nss, tu es d'accord avec moi que ceci est mis en œuvre par le client, qui pour nous est soit directement Nas4Free, et là, tout est installé, soit nos propres lignes de commandes.
oui je suis d'accord avec toi!
velivole18 wrote:Pour nos propres lignes de commandes, soit nous sommes directement sous Nas4Free, et donc nous sommes dans un environnement possédant déjà pam+nss, soit nous sommes en jail et là il nous faut installer pam+nss
D'accord avec toi!
velivole18 wrote:(et encore, je ne suis pas sûr que ce soit indispensable !)
Je suis pas sur, je verifierai
velivole18 wrote:Je continue à croire que le serveur slapd ne connaît en rien les couches pam+nss, qu'il n'en a pas besoin, et que ce service pourrait déjà exister ailleurs sur une autre plateforme.
Oui et je pense que l'identification par pam ne serait pas forcément requise pour un autre client qui serait pas exemple installé sur raspberry.. je testerai!
velivole18 wrote: soit il est local au client et on peut y accéder en socket de type mémoire partagée (domain Unix), ce que j'ai mis en place dans mon dernier post avec "ldapi" et ce qui à plutôt l'air de plaire à Nas4Free, tout du moins pour établir une communication
Je suis toujours avec cette ligne dans rc.conf

Code: Select all

slapd_enable="YES"
slapd_flags='-V -h "ldap://192.168.0.46/ ldapi://%2fvar%2frun%2fopenldap%2fldapi/" -d 1'
slapd_sockets="/var/run/openldap/ldapi"
Je vais tester avec tes nouvelles commandes

Concernant mes derniers résultats:

J'ai installé une full nas4free sans swap. Avant d'installer openldap, j'ai vérifié les liens symboliques dans /usr/local/etc. Tout est bien là, à savoir

ldap.conf
ldap.secret
nss_ldap.conf
nss_ldap.secret

Dans /var/etc il y a bien les fichiers suivants

ldap.conf
ldap.secret

Je configure le client ldap de nas4free et ensuite j'installe openldap server

Code: Select all

 pkg_add -r openldap24-server
Ensuite j'efface ldap.conf qui se trouve dans /usr/local/etc/openldap

Et je fais le lien symbolique suivant

Code: Select all

ln -s /var/etc/ldap.conf /usr/local/etc/openldap/ldap.conf
j'alimente le fichier rc.conf avec ces lignes là:

Code: Select all

slapd_enable="YES"
slapd_flags='-V -h "ldap://192.168.0.46/ ldapi://%2fvar%2frun%2fopenldap%2fldapi/" -d 1'
slapd_sockets="/var/run/openldap/ldapi"
Je crée ensuite le user "ldap"

J'ouvre 2 consoles ssh, une qui me sert à lancer ldapsearch et l'autre pour lancer slapd avec la commande suivante

Code: Select all

/usr/local/etc/rc.d/slapd start
cette derniere console, je la laisse ouverte sinon je pense que cela ferme openldap! peu être pour çà que tu as l'erreur

Code: Select all

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
Par ailleurs je ne tape pas

Code: Select all

/usr/local/bin/ldapsearch
mais juste ldapsearch à la racine nas4free

J'ai relancé le serveur, peu être pour çà!

Et enfin on ne peut compiler que dans une jail et ce grâce aux ports, je vois aucune autre possibilités. Si on arrive à se caler sur une full, fonctionnelle pour tous les deux, je pense qu'on pourrait continuer ensemble sur la même voie sans garantie que ce soit la bonne :lol: mais la full est ce qui jusqu'à présent m'a donné les meilleurs résultats et en plus à chaque fois qu'il y a une erreur, le journal de nas4free l'explicite et çà c'est pas mal aussi.

Re: Serveur OpenLDAP Nas4Free

Posted: 04 Jan 2015 20:02
by velivole18
Bonsoir,

J'ai repris la même manip que toi dans ton dernier post.
ldapsearch fonctionne de nouveau, après un re-démarrage de Nas4Free.
OpenLdap fonctionne.
J'ai pu enregistrer les éléments racine sans problème.
La liaison entre Nas4Free et OpenLdap se fait avec ldapi.
Mais je retombe sur notre bonne vieille erreur :
54a97e4e <= bdb_dn2idl: get failed: DB_NOTFOUND: No matching key/data pair found (-30989)
Si nous pouvions installer OpenLdap compilé avec MDB, je pense que cela fonctionnerait ...
Mais comme on ne peut pas recompiler sous Nas4Free ... et je me doute que de juste reprendre le binaire de la version compilée sous jail ne sera pas suffisant quand on voit tous les liens dynamiques avec des bibliothèques spécifiques.
Je me demande si je vais pas installer en machine virtuelle une Ubuntu server juste pour faire tourner OpenLdap et voir avec le mode trace ce qui se passe entre Nas4Free et Ubuntu/OpenLdap.

Bonne soirée.
Demain, reprise du boulot :( , sans avoir fait mes devoirs :oops:

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 05 Jan 2015 20:23
by laster13
Bonsoir,

Quelques questions que je me pose :roll:

Lorsqu'on installe opendlap serveur, le fichier ldap.conf est également crée dans le dossier openldap, probablement parce qu'il installe également openldap client. Depuis le début, je m'évertue à placer le fichier ldap.conf dans le dossier openldap mais est ce vraiment sa place ? Après reflexion je me dis que non, d'autant que si on prend un autre pc comme client genre ubuntu, le fichier client restera sur ce pc (peux tu me le confirmer stp ?). Alors pourquoi lorsque que je fais un ldapsearch, cela ne fonctionne que si ldap.conf est dans le dossier openldap ? C'est à mon avis là le fond du problème.

En synthèse:
Si ldap.conf est dans dossier openldap ===> ldapsearch fonctionne et le client communique avec la base de donnée et j'ai même le super log que j'ai donné plus haut mais la liaison avec la base nas4free ne se fait pas! Dailleurs dans le journal nas4free, j'ai le message d'erreur suivant
slapd[2309]: nss_ldap: could not search LDAP server - Server is unavailable
Si ldap reste par défaut là ou nas4free l'a placé, c'est à dire dans /var/etc, alors ldapsearch ne communique plus avec la base de donnée de opendlap serveur et là plus de log.

Cela peu être du à des problèmes de permissions et j'ai lu quelque part qu'il fallait rattacher la base au "user" et "groupe" ==>ldap

Code: Select all

chown ldap:ldap /var/db/openldap-data
Peu être des "chmod" à faire.... je ne sais pas :roll:

A l'heure actuelle, je suis de plus en plus convaincu qu'il faille laisser les fichiers de configuration là ou ils sont, sans faire de link et faire en sorte que ldapsearch fonctionne sans que le ldap.conf soit dans dans le dossier openldap. Je suis presque certain que le serveur openldap qu'on installe fonctionne parfaitement et que le problème ne vient que de la configuration du client.

Cela dit j'ai continué de fouiller sur le net, notamment concernant pam et nssn et ce qui semble être incontournable, c'est la modification des fichiers suivant "/etc/pam.d/system" et "/etc/pam.d/sshd" et aussi /etc/nsswitch.conf
pam

Changes to /etc/pam.d/system, lines 12, 17 and 23:

1 #
2 # $FreeBSD: src/etc/pam.d/system,v 1.1.32.1.8.1 2012/03/03 06:15:13 kensmith Exp $
3 #
4 # System-wide defaults
5 #
6
7 # auth
8 auth sufficient pam_opie.so no_warn no_fake_prompts
9 auth requisite pam_opieaccess.so no_warn allow_local
10 #auth sufficient pam_krb5.so no_warn try_first_pass
11 #auth sufficient pam_ssh.so no_warn try_first_pass
12 auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass
13 auth required pam_unix.so no_warn try_first_pass nullok
14
15 # account
16 #account required pam_krb5.so
17 account required /usr/local/lib/pam_ldap.so ignore_unknown_user ignore_authinfo_unavail
18 account required pam_login_access.so
19 account required pam_unix.so
20
21 # session
22 #session optional pam_ssh.so
23 session required /usr/local/lib/pam_mkhomedir.so
24 session required pam_lastlog.so no_fail
25
26 # password
27 #password sufficient pam_krb5.so no_warn try_first_pass
28 password required pam_unix.so no_warn try_first_pass
/etc/pam.d/sshd, lines 9, 21 and 25:

1 % cat /etc/pam.d/sshd
2 #
3 # $FreeBSD: src/etc/pam.d/sshd,v 1.16.10.1.8.1 2012/03/03 06:15:13 kensmith Exp $
4 #
5 # PAM configuration for the "sshd" service
6 #
7
8 # auth
9 auth sufficient /usr/local/lib/pam_ldap.so no_warn
10 auth sufficient pam_opie.so no_warn no_fake_prompts
11 auth requisite pam_opieaccess.so no_warn allow_local
12 #auth sufficient pam_krb5.so no_warn try_first_pass
13 #auth sufficient pam_ssh.so no_warn try_first_pass
14 auth required pam_unix.so no_warn try_first_pass
15
16 # account
17 account required pam_nologin.so
18 #account required pam_krb5.so
19 account required pam_login_access.so
20 account required pam_unix.so
21 account required /usr/local/lib/pam_ldap.so no_warn ignore_authinfo_unavail ignore_unknown_user
22
23 # session
24 #session optional pam_ssh.so
25 session required /usr/local/lib/pam_mkhomedir.so
26 session required pam_permit.so
27
28 # password
29 #password sufficient pam_krb5.so no_warn try_first_pass
30 password required pam_unix.so no_warn try_first_pass
# nsswitch.conf(5) - name service switch configuration file
# $FreeBSD: release/10.0.0/etc/nsswitch.conf 224765 2011-08-10 20:52:02Z dougb $
#
group: cache files ldap
group_compat: nis
hosts: files dns
networks: files
passwd: cache files ldap
passwd_compat: nis
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files
Ce que je me propose d'essayer dans les jours qui viennent..

Dans une full, je vais installer opendlap server sans activer le client de nas4free. En parrallèle, je vais installer finch (en chroot) qui est un pur environnement freebsd, et configurer le client dans finch à l'aide de ces deux tutos.

https://blog.art-of-coding.eu/using-ldap-under-freebsd/
https://cdc.iseage.org/tutorial-pam-lda ... y-freebsd/

Le but pour l'instant est de confirmer que le serveur fonctionne et de prouver que le problème vient du client, ensuite si le test est concluant cela sera plus facile d'orienter nos futures recherches

Pour terminer, il y a deux commandes importantes qui nous seront utiles pour interroger la base

Pour interroger les "users" faisant parti de l annuaire openldap

Code: Select all

getent passwrd
Pour interroger les "groups" faisant parti de l annuaire openldap

Code: Select all

getent groups
et comme par hasard on y retrouve la similitude avec les lignes de configuration du fichier ldap.conf
nss_base_passwd ou=password,dc=famille,dc=local?one
nss_base_group ou=groups,dc=famille,dc=local?one
Voilà, dis moi si je me trompe sur certain points et donne moi ton avis, j'en ai besoin pour savoir si je fais fausse route

Re: Serveur OpenLDAP Nas4Free

Posted: 05 Jan 2015 21:39
by velivole18
Bonsoir,

En ce qui concerne la question sur ldap.conf, un man de ldap.conf est très clair sur le sujet :
DESCRIPTION
If the environment variable LDAPNOINIT is defined, all defaulting is
disabled.

The ldap.conf configuration file is used to set system-wide defaults to
be applied when running ldap clients.


Users may create an optional configuration file, ldaprc or .ldaprc, in
their home directory which will be used to override the system-wide
defaults file. The file ldaprc in the current working directory is
also used.
...
Je pense que ce fichier est dans le répertoire d'openldap car en même temps que le serveur, le nécessaire pour un client est aussi installé, ne serait-ce que pour l'administrateur pour configurer la base ldap au départ.
Les commandes clientes telles que ldapsearch ne fonctionnement plus si ce fichier de conf n'est plus dans le répertoire d'OpenLdap car il doit y avoir une config (type variable d'environnement) qui indique où est ce fichier.
Le tout est de trouver où est cette config (je vais chercher du côté "ldaprc", ".ldaprc" ou "$LDAP<option-name>" comme indiqué dans le man).

En ce qui concerne la configuration des fichiers "/etc/pam.d/system" et "/etc/pam.d/sshd" et aussi /etc/nsswitch.conf, certes, sur le principe je suis d'accord qu'ils ont une influence.
Par contre je ne comprends pas qu'il faille faire autant de configuration et d'adaptation côté Nas4Free qui n'est que client, ne l'oublions pas, alors que les développeurs de Nas4Free ont l'habitude de nous demander dans le webgui tout ce qui est nécessaire, sans que nous ayons besoin d'être informaticien pour faire fonctionner le service en question (je pense notamment à BitTorrent, Daap ...).

Pour l'erreur "54a97e4e <= bdb_dn2idl: get failed: DB_NOTFOUND: No matching key/data pair found (-30989)", d'autres users d'OpenLdap ont eu le problème en dehors d'un environnement Nas4Free.
Je pense que cette erreur est bien dans la version binaire d'OpenLdap et qu'il nous faudra utiliser la version compilée pour résoudre ce problème. Donc obligatoirement en jail, à moins qu'une bonne âme nous fournisse une nouvelle du binaire à installer (d'ailleurs, pourquoi n'est-ce pas déjà fait, le bug est connu depuis longtemps ? ...).

Sinon, je suis d'accord avec les tests que tu veux faire.
Pour moi nous avons 2 problèmes :
- le bug sur l'utilisation d'une base DB-Berkeley qui ne fonctionne pas
- la config du client (ce qui m'étonne car pour moi Nas4Free est déjà prêt, d'ailleurs les options du fichier ldap.conf peuvent être saisie via le webgui, sans avoir besoin d'aller le faire en mode console! Ce qui correspond bien à la philosophie de Nas4Free).

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 10 Jan 2015 15:04
by laster13
Bonjour velivole18,

Je pense avoir avancer mais pas dans la même réflexion que précédemment. Je suis d'accord avec toi, le fichier ldap.conf est nécessaire au serveur pour fonctionner, ne serait ce que pour alimenter la base de donnée et pouvoir la consulter avec ldapsearch. Le serveur openldap a donc besoin de son propre client pour fonctionner, c'est un fait.

Jusqu'à présent je m'évertuais à vouloir créer un utilisateur directement dans l interface webui de Nas4free et espérer le voir référencer dans la base openldap grâce à la commande ldapsearch. Hors ce matin à 6h00, heure à laquelle mes petites billes se sont ouvertes :mrgreen: et heure à laquelle je commence à gamberger sur les soucis de la vie :lol: , comme nous tous je crois, voilà ce que je me suis dis.

Les 2 bases sont complètement dissociées l'une de l'autre, sont probablement structurées de manière complètement différentes et bien sur n’obéissent pas au même règles de fonctionnement. Juste un exemple: pour créer un utilisateur dans freebsd on utilise la commande "adduser". Dans openldap, pour entrer un enregistrement on utilise la commande "ldapadd". Comment peut on espérer qu'en créant un utilsateur dans Nas4free, celui ci se retrouve référencer dans la base openldap... cela ne me semble pas possible!!

J'ai donc crée deux jails dans finch, une pour le client et l'autre pour le serveur. Coté client j'ai installé et configuré les packages suivants:

-openldap24-client
-pam_ldap
-nss_ldap

J'ai par ailleurs modifié les fichiers suivants:

/etc/pam.d/sshd (ssh login)
/etc/pam.d/system (local console login)

avec la ligne suivante
auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass
Je précise que ce fichier "pam_ldap.so" est installé avec "pam_ldap".

J'ai par ailleurs crée les liens symboliques préconisés dans tous les tutos que j'ai testé à savoir:
ln -s /usr/local/etc/ldap.conf /usr/local/etc/nss_ldap.conf


Ainsi que la configuration suivante:
# On enregistre le mot de passe dans le fichier /usr/local/etc/ldap.secret
echo "proxy" > /usr/local/etc/ldap.secret
# On le rend lisible que par root
chmod u=rw,go= /usr/local/etc/ldap.secret
J'ai même compilé le port suivant:
Création automatique du répertoire utilisateur

Il existe un module PAM commun aux systèmes Linux et FreeBSD, nommé pam_mkhomedir, qui permet de créer automatiquement le répertoire de l'utilisateur si celui-ci n'existe pas à sa connexion.

Les distributions Linux en disposent de base par contre pour FreeBSD il faut l'ajouter, son installation se fait ainsi à l'aide des logiciels portés :

cd /usr/ports/security/pam_mkhomedir/
make install
Puis suivant les programmes utilisés pour se connecter, vous devez ajouter aux fichiers de configuration adéquats situés dans /etc/pam.d la ligne suivante :

session required /usr/local/lib/pam_mkhomedir.so
Tout cela pour te dire au final

Une fois le client configuré dans la jail, et si je compare cette configuration avec celle "native" de Nas4free, elles sont exactement pareilles. Le client Nas4free est d'origine parfaitement configuré avec tout ce qui lui est nécessaire pour se connecter à un serveur openldap, même la configuration de "pam_mkhomedir.so[" est active sur ce client. Tu peux d'ailleurs le vérifier dans /etc/pam.d/sshd.

Du coup, par rapport à ma réflexion sur les 2 bases de données, ainsi que celle sur le client de Nas4free, je me suis dit que si j'arrivais à créer un utilisateur associé à un groupe dans la base de openldap avec la commande ldapadd et qu'ensuite j'arrive à me connecter en ssh à Nas4free avec ces mêmes identifiants, pour moi cela serait gagné. Car pour moi, aujourd'hui, je considère que la base openldap ne peut s'incrémenter qu'avec la commande ldapadd ou phpldapadmin et non pas avec Nas4free (dis moi si je fais fausse route)

J'ai donc créé un utilsateur avec le fichier ldif suivant:

Code: Select all

dn: uid=ppda,ou=Utilisateurs,dc=julp,dc=com
cn: Patrick Poivre d'Arvor
sn: ppda
objectclass: top
objectclass: person
objectclass: posixAccount
objectclass: shadowAccount
uid: ppda
uidnumber: 2000
gidnumber: 0
gecos: Patrick Poivre d'Arvor
loginShell: /bin/csh
homeDirectory: /mnt/pool1/Photos
userpassword: {MD5}feSlkL+wVCSXPBHPOnFPSA==
et le groupe suivant:

Code: Select all

dn: cn=wheel,ou=Groupes,dc=julp,dc=com
objectclass: top
objectclass: posixGroup
cn: wheel
gidNumber: 0
description: groupe wheel
memberUid: ppda
Je tente de me connecter en ssh à Nas4free et voila ce que j'obtiens:

Code: Select all

login as: ppda
ppda@192.168.0.21's password:
Last login: Sat Jan 10 09:11:30 2015 from 192.168.0.11
Welcome to NAS4Free!
%
Il ne manque vraiment pas grand chose pour que la connection soit parfaite, probablement quelque chose dans mon shéma qui manque!!

Voila le log openldap:

Code: Select all

54b12d9b slapd starting
54b12da5 slap_listener_activate(5):
54b12da5 >>> slap_listener(ldap://192.168.0.150/)
54b12da5 connection_get(10): got connid=1000
54b12da5 connection_read(10): checking for input on id=1000
ber_get_next
ber_get_next: tag 0x30 len 45 contents:
54b12da5 op tag 0x60, time 1420897701
ber_get_next
54b12da5 conn=1000 op=0 do_bind
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
54b12da5 >>> dnPrettyNormal: <cn=manager,dc=julp,dc=com>
54b12da5 <<< dnPrettyNormal: <cn=manager,dc=julp,dc=com>, <cn=manager,dc=julp,dc=com>
54b12da5 do_bind: version=3 dn="cn=manager,dc=julp,dc=com" method=128
54b12da5 do_bind: v3 bind: "cn=manager,dc=julp,dc=com" to "cn=manager,dc=julp,dc=com"
54b12da5 send_ldap_result: conn=1000 op=0 p=3
54b12da5 send_ldap_response: msgid=1 tag=97 err=0
ber_flush2: 14 bytes to sd 10
54b12da5 connection_get(10): got connid=1000
54b12da5 connection_read(10): checking for input on id=1000
ber_get_next
ber_get_next: tag 0x30 len 260 contents:
54b12da5 op tag 0x63, time 1420897701
54b12da5 connection_input: conn=1000 deferring operation: binding
ber_get_next
54b12da5 conn=1000 op=1 do_search
ber_scanf fmt ({miiiib) ber:
54b12da5 >>> dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>
54b12da5 <<< dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>, <ou=utilisateurs,dc=julp,dc=com>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({M}}) ber:
54b12da5 => mdb_search
54b12da5 mdb_dn2entry("ou=utilisateurs,dc=julp,dc=com")
54b12da5 => mdb_dn2id("ou=utilisateurs,dc=julp,dc=com")
54b12da5 <= mdb_dn2id: got id=0x2
54b12da5 => mdb_entry_decode:
54b12da5 <= mdb_entry_decode
54b12da5 search_candidates: base="ou=utilisateurs,dc=julp,dc=com" (0x00000002) scope=1
54b12da5 => mdb_equality_candidates (objectClass)
54b12da5 => key_read
54b12da5 <= mdb_index_read: failed (-30798)
54b12da5 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da5 => mdb_equality_candidates (objectClass)
54b12da5 => key_read
54b12da5 <= mdb_index_read 1 candidates
54b12da5 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da5 => mdb_equality_candidates (uid)
54b12da5 => key_read
54b12da5 <= mdb_index_read 1 candidates
54b12da5 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da5 mdb_search_candidates: id=1 first=6 last=6
54b12da5 => mdb_entry_decode:
54b12da5 <= mdb_entry_decode
54b12da5 => send_search_entry: conn 1000 dn="uid=ppda,ou=Utilisateurs,dc=julp,dc=com"
ber_flush2: 349 bytes to sd 10
54b12da5 <= send_search_entry: conn 1000 exit.
54b12da5 send_ldap_result: conn=1000 op=1 p=3
54b12da5 send_ldap_response: msgid=2 tag=101 err=0
ber_flush2: 14 bytes to sd 10
54b12da9 connection_get(10): got connid=1000
54b12da9 connection_read(10): checking for input on id=1000
ber_get_next
ber_get_next: tag 0x30 len 260 contents:
54b12da9 op tag 0x63, time 1420897705
ber_get_next
54b12da9 conn=1000 op=2 do_search
ber_scanf fmt ({miiiib) ber:
54b12da9 >>> dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>, <ou=utilisateurs,dc=julp,dc=com>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({M}}) ber:
54b12da9 => mdb_search
54b12da9 mdb_dn2entry("ou=utilisateurs,dc=julp,dc=com")
54b12da9 => mdb_dn2id("ou=utilisateurs,dc=julp,dc=com")
54b12da9 <= mdb_dn2id: got id=0x2
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 search_candidates: base="ou=utilisateurs,dc=julp,dc=com" (0x00000002) scope=1
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read: failed (-30798)
54b12da9 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 => mdb_equality_candidates (uid)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 mdb_search_candidates: id=1 first=6 last=6
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 => send_search_entry: conn 1000 dn="uid=ppda,ou=Utilisateurs,dc=julp,dc=com"
ber_flush2: 349 bytes to sd 10
54b12da9 <= send_search_entry: conn 1000 exit.
54b12da9 send_ldap_result: conn=1000 op=2 p=3
54b12da9 send_ldap_response: msgid=3 tag=101 err=0
ber_flush2: 14 bytes to sd 10
54b12da9 slap_listener_activate(5):
54b12da9 >>> slap_listener(ldap://192.168.0.150/)
54b12da9 connection_get(11): got connid=1001
54b12da9 connection_read(11): checking for input on id=1001
ber_get_next
ber_get_next: tag 0x30 len 45 contents:
54b12da9 op tag 0x60, time 1420897705
ber_get_next
54b12da9 conn=1001 op=0 do_bind
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
54b12da9 >>> dnPrettyNormal: <cn=manager,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <cn=manager,dc=julp,dc=com>, <cn=manager,dc=julp,dc=com>
54b12da9 do_bind: version=3 dn="cn=manager,dc=julp,dc=com" method=128
54b12da9 do_bind: v3 bind: "cn=manager,dc=julp,dc=com" to "cn=manager,dc=julp,dc=com"
54b12da9 send_ldap_result: conn=1001 op=0 p=3
54b12da9 send_ldap_response: msgid=1 tag=97 err=0
ber_flush2: 14 bytes to sd 11
54b12da9 connection_get(11): got connid=1001
54b12da9 connection_read(11): checking for input on id=1001
ber_get_next
ber_get_next: tag 0x30 len 202 contents:
54b12da9 op tag 0x63, time 1420897705
54b12da9 connection_input: conn=1001 deferring operation: binding
ber_get_next
54b12da9 conn=1001 op=1 do_search
ber_scanf fmt ({miiiib) ber:
54b12da9 >>> dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>, <ou=utilisateurs,dc=julp,dc=com>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({M}}) ber:
54b12da9 => mdb_search
54b12da9 mdb_dn2entry("ou=utilisateurs,dc=julp,dc=com")
54b12da9 => mdb_dn2id("ou=utilisateurs,dc=julp,dc=com")
54b12da9 <= mdb_dn2id: got id=0x2
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 search_candidates: base="ou=utilisateurs,dc=julp,dc=com" (0x00000002) scope=1
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read: failed (-30798)
54b12da9 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da9 => mdb_equality_candidates (uid)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 mdb_search_candidates: id=1 first=6 last=6
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 => send_search_entry: conn 1001 dn="uid=ppda,ou=Utilisateurs,dc=julp,dc=com"
ber_flush2: 71 bytes to sd 11
54b12da9 <= send_search_entry: conn 1001 exit.
54b12da9 send_ldap_result: conn=1001 op=1 p=3
54b12da9 send_ldap_response: msgid=2 tag=101 err=0
ber_flush2: 14 bytes to sd 11
54b12da9 connection_get(11): got connid=1001
54b12da9 connection_read(11): checking for input on id=1001
ber_get_next
ber_get_next: tag 0x30 len 45 contents:
54b12da9 op tag 0x60, time 1420897705
ber_get_next
54b12da9 conn=1001 op=2 do_bind
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
54b12da9 >>> dnPrettyNormal: <cn=manager,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <cn=manager,dc=julp,dc=com>, <cn=manager,dc=julp,dc=com>
54b12da9 do_bind: version=3 dn="cn=manager,dc=julp,dc=com" method=128
54b12da9 do_bind: v3 bind: "cn=manager,dc=julp,dc=com" to "cn=manager,dc=julp,dc=com"
54b12da9 send_ldap_result: conn=1001 op=2 p=3
54b12da9 send_ldap_response: msgid=3 tag=97 err=0
ber_flush2: 14 bytes to sd 11
54b12da9 connection_get(11): got connid=1001
54b12da9 connection_read(11): checking for input on id=1001
ber_get_next
ber_get_next: tag 0x30 len 59 contents:
54b12da9 op tag 0x60, time 1420897705
54b12da9 connection_input: conn=1001 deferring operation: binding
ber_get_next
54b12da9 conn=1001 op=3 do_bind
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
54b12da9 >>> dnPrettyNormal: <uid=ppda,ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <uid=ppda,ou=Utilisateurs,dc=julp,dc=com>, <uid=ppda,ou=utilisateurs,dc=julp,dc=com>
54b12da9 do_bind: version=3 dn="uid=ppda,ou=Utilisateurs,dc=julp,dc=com" method=128
54b12da9 mdb_dn2entry("uid=ppda,ou=utilisateurs,dc=julp,dc=com")
54b12da9 => mdb_dn2id("uid=ppda,ou=utilisateurs,dc=julp,dc=com")
54b12da9 <= mdb_dn2id: got id=0x6
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 do_bind: v3 bind: "uid=ppda,ou=Utilisateurs,dc=julp,dc=com" to "uid=ppda,ou=Utilisateurs,dc=julp,dc=com"
54b12da9 send_ldap_result: conn=1001 op=3 p=3
54b12da9 send_ldap_response: msgid=4 tag=97 err=0
ber_flush2: 14 bytes to sd 11
54b12da9 connection_get(11): got connid=1001
54b12da9 connection_read(11): checking for input on id=1001
ber_get_next
ber_get_next: tag 0x30 len 45 contents:
54b12da9 op tag 0x60, time 1420897705
54b12da9 connection_input: conn=1001 deferring operation: binding
ber_get_next
54b12da9 conn=1001 op=4 do_bind
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
54b12da9 >>> dnPrettyNormal: <cn=manager,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <cn=manager,dc=julp,dc=com>, <cn=manager,dc=julp,dc=com>
54b12da9 do_bind: version=3 dn="cn=manager,dc=julp,dc=com" method=128
54b12da9 do_bind: v3 bind: "cn=manager,dc=julp,dc=com" to "cn=manager,dc=julp,dc=com"
54b12da9 send_ldap_result: conn=1001 op=4 p=3
54b12da9 send_ldap_response: msgid=5 tag=97 err=0
ber_flush2: 14 bytes to sd 11
54b12da9 connection_get(10): got connid=1000
54b12da9 connection_read(10): checking for input on id=1000
ber_get_next
ber_get_next: tag 0x30 len 260 contents:
54b12da9 op tag 0x63, time 1420897705
ber_get_next
54b12da9 conn=1000 op=3 do_search
ber_scanf fmt ({miiiib) ber:
54b12da9 >>> dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>, <ou=utilisateurs,dc=julp,dc=com>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({M}}) ber:
54b12da9 => mdb_search
54b12da9 mdb_dn2entry("ou=utilisateurs,dc=julp,dc=com")
54b12da9 => mdb_dn2id("ou=utilisateurs,dc=julp,dc=com")
54b12da9 <= mdb_dn2id: got id=0x2
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 search_candidates: base="ou=utilisateurs,dc=julp,dc=com" (0x00000002) scope=1
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read: failed (-30798)
54b12da9 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 => mdb_equality_candidates (uid)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 mdb_search_candidates: id=1 first=6 last=6
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 => send_search_entry: conn 1000 dn="uid=ppda,ou=Utilisateurs,dc=julp,dc=com"
ber_flush2: 349 bytes to sd 10
54b12da9 <= send_search_entry: conn 1000 exit.
54b12da9 send_ldap_result: conn=1000 op=3 p=3
54b12da9 send_ldap_response: msgid=4 tag=101 err=0
ber_flush2: 14 bytes to sd 10
54b12da9 connection_get(10): got connid=1000
54b12da9 connection_read(10): checking for input on id=1000
ber_get_next
ber_get_next: tag 0x30 len 260 contents:
54b12da9 op tag 0x63, time 1420897705
ber_get_next
54b12da9 conn=1000 op=4 do_search
ber_scanf fmt ({miiiib) ber:
54b12da9 >>> dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>, <ou=utilisateurs,dc=julp,dc=com>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({M}}) ber:
54b12da9 => mdb_search
54b12da9 mdb_dn2entry("ou=utilisateurs,dc=julp,dc=com")
54b12da9 => mdb_dn2id("ou=utilisateurs,dc=julp,dc=com")
54b12da9 <= mdb_dn2id: got id=0x2
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 search_candidates: base="ou=utilisateurs,dc=julp,dc=com" (0x00000002) scope=1
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read: failed (-30798)
54b12da9 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 => mdb_equality_candidates (uid)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 mdb_search_candidates: id=1 first=6 last=6
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 => send_search_entry: conn 1000 dn="uid=ppda,ou=Utilisateurs,dc=julp,dc=com"
ber_flush2: 349 bytes to sd 10
54b12da9 <= send_search_entry: conn 1000 exit.
54b12da9 send_ldap_result: conn=1000 op=4 p=3
54b12da9 send_ldap_response: msgid=5 tag=101 err=0
ber_flush2: 14 bytes to sd 10
54b12da9 slap_listener_activate(5):
54b12da9 >>> slap_listener(ldap://192.168.0.150/)
54b12da9 connection_get(12): got connid=1002
54b12da9 connection_read(12): checking for input on id=1002
ber_get_next
ber_get_next: tag 0x30 len 45 contents:
54b12da9 op tag 0x60, time 1420897705
ber_get_next
54b12da9 conn=1002 op=0 do_bind
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
54b12da9 >>> dnPrettyNormal: <cn=manager,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <cn=manager,dc=julp,dc=com>, <cn=manager,dc=julp,dc=com>
54b12da9 do_bind: version=3 dn="cn=manager,dc=julp,dc=com" method=128
54b12da9 do_bind: v3 bind: "cn=manager,dc=julp,dc=com" to "cn=manager,dc=julp,dc=com"
54b12da9 send_ldap_result: conn=1002 op=0 p=3
54b12da9 send_ldap_response: msgid=1 tag=97 err=0
ber_flush2: 14 bytes to sd 12
54b12da9 connection_get(12): got connid=1002
54b12da9 connection_read(12): checking for input on id=1002
ber_get_next
ber_get_next: tag 0x30 len 98 contents:
54b12da9 op tag 0x63, time 1420897705
54b12da9 connection_input: conn=1002 deferring operation: binding
ber_get_next
54b12da9 conn=1002 op=1 do_search
ber_scanf fmt ({miiiib) ber:
54b12da9 >>> dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>, <ou=utilisateurs,dc=julp,dc=com>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({M}}) ber:
54b12da9 => mdb_search
54b12da9 mdb_dn2entry("ou=utilisateurs,dc=julp,dc=com")
54b12da9 => mdb_dn2id("ou=utilisateurs,dc=julp,dc=com")
54b12da9 <= mdb_dn2id: got id=0x2
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 search_candidates: base="ou=utilisateurs,dc=julp,dc=com" (0x00000002) scope=1
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read: failed (-30798)
54b12da9 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 => mdb_equality_candidates (uid)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 mdb_search_candidates: id=1 first=6 last=6
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 => send_search_entry: conn 1002 dn="uid=ppda,ou=Utilisateurs,dc=julp,dc=com"
ber_flush2: 363 bytes to sd 12
54b12da9 <= send_search_entry: conn 1002 exit.
54b12da9 send_ldap_result: conn=1002 op=1 p=3
54b12da9 send_ldap_response: msgid=2 tag=101 err=0
ber_flush2: 14 bytes to sd 12
54b12da9 connection_get(12): got connid=1002
54b12da9 connection_read(12): checking for input on id=1002
ber_get_next
ber_get_next: tag 0x30 len 206 contents:
54b12da9 op tag 0x63, time 1420897705
ber_get_next
54b12da9 conn=1002 op=2 do_search
ber_scanf fmt ({miiiib) ber:
54b12da9 >>> dnPrettyNormal: <ou=Groupes,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <ou=Groupes,dc=julp,dc=com>, <ou=groupes,dc=julp,dc=com>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
54b12da9 >>> nameUIDPretty: <uid=ppda,ou=Utilisateurs,dc=julp,dc=com>
54b12da9 >>> dnPretty: <uid=ppda,ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< dnPretty: <uid=ppda,ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< nameUIDPretty: <uid=ppda,ou=Utilisateurs,dc=julp,dc=com>
54b12da9 >>> dnNormalize: <uid=ppda,ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< dnNormalize: <uid=ppda,ou=utilisateurs,dc=julp,dc=com>
ber_scanf fmt ({M}}) ber:
54b12da9 => get_ctrls
ber_scanf fmt ({m) ber:
ber_scanf fmt (m) ber:
54b12da9 => get_ctrls: oid="1.2.840.113556.1.4.319" (noncritical)
ber_scanf fmt ({im}) ber:
54b12da9 <= get_ctrls: n=1 rc=0 err=""
54b12da9 => mdb_search
54b12da9 mdb_dn2entry("ou=groupes,dc=julp,dc=com")
54b12da9 => mdb_dn2id("ou=groupes,dc=julp,dc=com")
54b12da9 <= mdb_dn2id: got id=0x3
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 search_candidates: base="ou=groupes,dc=julp,dc=com" (0x00000003) scope=1
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read: failed (-30798)
54b12da9 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=5, last=5
54b12da9 => mdb_equality_candidates (memberUid)
54b12da9 <= mdb_equality_candidates: (memberUid) not indexed
54b12da9 => mdb_equality_candidates (uniqueMember)
54b12da9 <= mdb_equality_candidates: (uniqueMember) not indexed
54b12da9 mdb_search_candidates: id=1 first=5 last=5
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 => send_search_entry: conn 1002 dn="cn=wheel,ou=Groupes,dc=julp,dc=com"
ber_flush2: 63 bytes to sd 12
54b12da9 <= send_search_entry: conn 1002 exit.
54b12da9 send_ldap_result: conn=1002 op=2 p=3
54b12da9 send_ldap_response: msgid=3 tag=101 err=0
ber_flush2: 51 bytes to sd 12
54b12da9 connection_get(12): got connid=1002
54b12da9 connection_read(12): checking for input on id=1002
ber_get_next
ber_get_next: tag 0x30 len 180 contents:
54b12da9 op tag 0x63, time 1420897705
ber_get_next
54b12da9 conn=1002 op=3 do_search
ber_scanf fmt ({miiiib) ber:
54b12da9 >>> dnPrettyNormal: <ou=Groupes,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <ou=Groupes,dc=julp,dc=com>, <ou=groupes,dc=julp,dc=com>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
54b12da9 >>> nameUIDPretty: <cn=wheel,ou=Groupes,dc=julp,dc=com>
54b12da9 >>> dnPretty: <cn=wheel,ou=Groupes,dc=julp,dc=com>
54b12da9 <<< dnPretty: <cn=wheel,ou=Groupes,dc=julp,dc=com>
54b12da9 <<< nameUIDPretty: <cn=wheel,ou=Groupes,dc=julp,dc=com>
54b12da9 >>> dnNormalize: <cn=wheel,ou=Groupes,dc=julp,dc=com>
54b12da9 <<< dnNormalize: <cn=wheel,ou=groupes,dc=julp,dc=com>
ber_scanf fmt ({M}}) ber:
54b12da9 => get_ctrls
ber_scanf fmt ({m) ber:
ber_scanf fmt (m) ber:
54b12da9 => get_ctrls: oid="1.2.840.113556.1.4.319" (noncritical)
ber_scanf fmt ({im}) ber:
54b12da9 <= get_ctrls: n=1 rc=0 err=""
54b12da9 => mdb_search
54b12da9 mdb_dn2entry("ou=groupes,dc=julp,dc=com")
54b12da9 => mdb_dn2id("ou=groupes,dc=julp,dc=com")
54b12da9 <= mdb_dn2id: got id=0x3
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 search_candidates: base="ou=groupes,dc=julp,dc=com" (0x00000003) scope=1
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read: failed (-30798)
54b12da9 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=5, last=5
54b12da9 => mdb_equality_candidates (uniqueMember)
54b12da9 <= mdb_equality_candidates: (uniqueMember) not indexed
54b12da9 mdb_search_candidates: id=1 first=5 last=5
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 mdb_search: 5 does not match filter
54b12da9 send_ldap_result: conn=1002 op=3 p=3
54b12da9 send_ldap_response: msgid=4 tag=101 err=0
ber_flush2: 51 bytes to sd 12
54b12da9 connection_get(10): got connid=1000
54b12da9 connection_read(10): checking for input on id=1000
ber_get_next
ber_get_next: tag 0x30 len 267 contents:
54b12da9 op tag 0x63, time 1420897705
ber_get_next
54b12da9 conn=1000 op=5 do_search
ber_scanf fmt ({miiiib) ber:
54b12da9 >>> dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>, <ou=utilisateurs,dc=julp,dc=com>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({M}}) ber:
54b12da9 => mdb_search
54b12da9 mdb_dn2entry("ou=utilisateurs,dc=julp,dc=com")
54b12da9 => mdb_dn2id("ou=utilisateurs,dc=julp,dc=com")
54b12da9 <= mdb_dn2id: got id=0x2
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 search_candidates: base="ou=utilisateurs,dc=julp,dc=com" (0x00000002) scope=1
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read: failed (-30798)
54b12da9 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 => mdb_equality_candidates (uidNumber)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 mdb_search_candidates: id=1 first=6 last=6
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 => send_search_entry: conn 1000 dn="uid=ppda,ou=Utilisateurs,dc=julp,dc=com"
ber_flush2: 349 bytes to sd 10
54b12da9 <= send_search_entry: conn 1000 exit.
54b12da9 send_ldap_result: conn=1000 op=5 p=3
54b12da9 send_ldap_response: msgid=6 tag=101 err=0
ber_flush2: 14 bytes to sd 10
54b12da9 connection_get(10): got connid=1000
54b12da9 connection_read(10): checking for input on id=1000
ber_get_next
ber_get_next: tag 0x30 len 260 contents:
54b12da9 op tag 0x63, time 1420897705
ber_get_next
54b12da9 conn=1000 op=6 do_search
ber_scanf fmt ({miiiib) ber:
54b12da9 >>> dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>, <ou=utilisateurs,dc=julp,dc=com>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({M}}) ber:
54b12da9 => mdb_search
54b12da9 mdb_dn2entry("ou=utilisateurs,dc=julp,dc=com")
54b12da9 => mdb_dn2id("ou=utilisateurs,dc=julp,dc=com")
54b12da9 <= mdb_dn2id: got id=0x2
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 search_candidates: base="ou=utilisateurs,dc=julp,dc=com" (0x00000002) scope=1
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read: failed (-30798)
54b12da9 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 => mdb_equality_candidates (uid)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 mdb_search_candidates: id=1 first=6 last=6
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 => send_search_entry: conn 1000 dn="uid=ppda,ou=Utilisateurs,dc=julp,dc=com"
ber_flush2: 349 bytes to sd 10
54b12da9 <= send_search_entry: conn 1000 exit.
54b12da9 send_ldap_result: conn=1000 op=6 p=3
54b12da9 send_ldap_response: msgid=7 tag=101 err=0
ber_flush2: 14 bytes to sd 10
54b12da9 slap_listener_activate(5):
54b12da9 >>> slap_listener(ldap://192.168.0.150/)
54b12da9 connection_get(13): got connid=1003
54b12da9 connection_read(13): checking for input on id=1003
ber_get_next
ber_get_next: tag 0x30 len 12 contents:
54b12da9 op tag 0x60, time 1420897705
ber_get_next
54b12da9 conn=1003 op=0 do_bind
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
54b12da9 >>> dnPrettyNormal: <>
54b12da9 <<< dnPrettyNormal: <>, <>
54b12da9 do_bind: version=3 dn="" method=128
54b12da9 send_ldap_result: conn=1003 op=0 p=3
54b12da9 send_ldap_response: msgid=1 tag=97 err=0
ber_flush2: 14 bytes to sd 13
54b12da9 connection_get(13): got connid=1003
54b12da9 connection_read(13): checking for input on id=1003
ber_get_next
ber_get_next: tag 0x30 len 267 contents:
54b12da9 op tag 0x63, time 1420897705
54b12da9 connection_input: conn=1003 deferring operation: binding
54b12da9 do_bind: v3 anonymous bind
ber_get_next
54b12da9 conn=1003 op=1 do_search
ber_scanf fmt ({miiiib) ber:
54b12da9 >>> dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>
54b12da9 <<< dnPrettyNormal: <ou=Utilisateurs,dc=julp,dc=com>, <ou=utilisateurs,dc=julp,dc=com>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({M}}) ber:
54b12da9 ==> limits_get: conn=1003 op=1 self="[anonymous]" this="ou=utilisateurs,dc=julp,dc=com"
54b12da9 => mdb_search
54b12da9 mdb_dn2entry("ou=utilisateurs,dc=julp,dc=com")
54b12da9 => mdb_dn2id("ou=utilisateurs,dc=julp,dc=com")
54b12da9 <= mdb_dn2id: got id=0x2
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 search_candidates: base="ou=utilisateurs,dc=julp,dc=com" (0x00000002) scope=1
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read: failed (-30798)
54b12da9 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 => mdb_equality_candidates (uidNumber)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 mdb_search_candidates: id=1 first=6 last=6
54b12da9 => mdb_entry_decode:
54b12da9 <= mdb_entry_decode
54b12da9 => send_search_entry: conn 1003 dn="uid=ppda,ou=Utilisateurs,dc=julp,dc=com"
ber_flush2: 349 bytes to sd 13
54b12da9 <= send_search_entry: conn 1003 exit.
54b12da9 send_ldap_result: conn=1003 op=1 p=3
54b12da9 send_ldap_response: msgid=2 tag=101 err=0
ber_flush2: 14 bytes to sd 13
54b12da9 connection_get(13): got connid=1003
54b12da9 connection_read(13): checking for input on id=1003
ber_get_next
54b12da9 ber_get_next on fd 13 failed errno=0 (No error: 0)
54b12da9 connection_close: conn=1003 sd=13

Pareil, si tu regardes bien le log, notamment à cet endroit:

Code: Select all

54b12da5 <= mdb_index_read: failed (-30798)
54b12da5 <= mdb_equality_candidates: id=0, first=0, last=0
54b12da5 => mdb_equality_candidates (objectClass)
Je pense qu'il manque une entrée dans ma base openldap, mais les deux autres entrées semblent parfaites

Code: Select all

54b12da9 => mdb_equality_candidates (objectClass)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 => mdb_equality_candidates (uid)
54b12da9 => key_read
54b12da9 <= mdb_index_read 1 candidates
54b12da9 <= mdb_equality_candidates: id=1, first=6, last=6
54b12da9 mdb_search_candidates: id=1 first=6 last=6
Pour réaliser ces tests, j'ouvre 2 consoles, une avec le log de slapd lancé et une autre pour me connecter à Nas4free en ssh. Dès que je commence à me logguer sur Nas4free, le log bouge et devient vivant... la connection se fait.

Voilà ou j'en suis, dis moi ce que tu en penses avant de poursuivre plus loin

Re: Serveur OpenLDAP Nas4Free

Posted: 10 Jan 2015 20:28
by velivole18
Bonsoir Laster13, et tout le monde ...

Tout d'abord, excuses-moi de ne pas avoir plus avancé.
Je rentre tard le soir de boulot et j'ai peu de temps en semaine.
De plus mon serveur principal vient de ma lâcher, 1 disque mort encore une fois.
Quand ça veut pas, ça veut pas !

Bon ceci dit, je comprends bien tous les essais que tu as fait.
Si c'est effectivement la bonne conclusion, je dirais que cela enlève de l'intérêt à OpenLdap dans Nas4Free.
Je pensais que la base OpenLdap remplaçait les fichiers de déclarations Linux FreeBSD, c'est à dire que lorsqu'on active le service Ldap, les users, les groupes et les hosts se déclarent automatiquement dans la base Ldap, via l'IHM webgui de Nas4Free, et que par la suite Nas4Free s’appuie dessus.
Or si je comprends bien la conclusion à laquelle tu arrives, Nas4Free ne serait qu'un client en lecture de la base Ldap qui elle serait mise à jour sans et en dehors de Nas4Free.
Cela veut dire qu'il faudrait gérer la base Ldap en dehors de Nas4Free, que les éléments déclarés dans Ldap n'apparaissent donc pas dans l'interface Nas4Free, et que Nas4free ne s'en sert que pour permettre à un client Nas4Free d'utiliser Nas4Free. C'est toujours ça, mais on perd l'intérêt d'avoir l'interface Nas4Free pour déclarer les users, les groupes et les hosts. Ce qui est dommage, car Nas4Free est aussi un élément central de l'architecture dans lequel il y a une IHM pour déclarer les utilisateurs, les groupes et les hosts.

Ce que je ne comprends pas alors, c'est pourquoi lorsque nous voulons créer un nouveau user, groupe ou host, Nas4Free cherche quand même à accéder à Ldap et à chercher la racine et les noeuds "users", "groups" et "Computers". Parce qu'en fait, avec ta conclusion, les développeurs de Nas4Free n'auraient que programmé l'accès en lecture sur Ldap pour aller chercher les users, les groupes et les hosts.

L'intérêt tout de même est d'avoir la même machine physique (et en général centrale dans notre architecture familiale) pour supporter à la fois Nas4Free et OpenLdap. Si c'est le cas, phpldapadmin dans la jail de Nas4Free reprends de l'intérêt pour effectivement gérer Ldap.

Une précision tout de même, mais je pense que nous sommes d'accord :
OpenLdap n'a pas besoin du fichier ldap.conf. Ce fichier n'est que pour le client. S'il est présent lorsqu'on installe OpenLdap, c'est uniquement parce qu'un client est aussi installé en même temps pour mettre à jour directement en mode console la base Ldap.
Si j'installe OpenLdap sur un autre PC serveur (debian par ex.) et que j'accède en mise à jour à cet Ldap à partir d'un autre poste distant client ldap, alors sur mon serveur Debian je n'ai pas besoin de la partie cliente et je peux à la rigueur virer le fichier ldap.conf et les api du type ldapsearch.

Bon, je suis un peu étonné que Nas4Free ne puisse pas mettre à jour la base Ldap lorsque je déclare un user par ex. via son IHM Webgui.
Mais je comprends la philosophie qui ne ferait de Nas4Free qu'un "simple" client exploitant une base Ldap mise à jour par ailleurs.

Est-ce que cela règle pour autant notre problème de clé dans Ldap ?

Bon, je t'avoue que je vais essayer de réparer mon Nas principal, finir mes devoirs pour mon boss, qui n'était pas très content à la reprise du boulot et je reviendrai sur le sujet.

Merci laster13.

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 10 Jan 2015 20:53
by velivole18
Bonsoir,
Dans openldap, pour entrer un enregistrement on utilise la commande "ldapadd". Comment peut on espérer qu'en créant un utilsateur dans Nas4free, celui ci se retrouve référencer dans la base openldap... cela ne me semble pas possible!!
En fait, il existe une API en langage C qui permet d'exploiter une base Ldap. Un programmeur peut tout à fait exploiter en mise à jour ou en lecture par son propre programme C une base Ldap. C'est d'ailleurs comme cela que le client Ldap est réalisé.

Je pensais donc que les développeurs de Nas4Free avaient non seulement implémenté les verbes en langage C de l'API cliente de Ldap pour effectivement aller lire la base, mais aussi les verbes C de l'API pour mettre à jour la base Ldap, ce qui aurait évité d'avoir à déclarer les users, groupes et hosts en dehors de Nas4Free.
Mais effectivement, bien souvent la base Ldap existe avant la mise en place de Nas4Free et Ldap est mise à jour par un logiciel dédié pour cela.

Ta conclusion serait aussi logique.
Mais dans ce cas là, avec le service Ldap d'activé et une base Ldap en ligne, on continue à bénéficier des déclarations de users, groupes, hosts via l'IHM de Nas4Free et donc je peux avoir un user "toto" déclaré via Nas4Free ou un user "titi" déclaré dans Ldap.
L'utilisation de ces 2 sources de déclarations est pour ma part pas très propre, même si cela reste possible.

Le test à faire effectivement, c'est d'installer OpenLdap en jail (avec l'option MDB), d'y déclarer directement en mode console un user sans déclarer pour autant ce user dans Nas4Free, et voir si on peut par exemple accéder à Nas4Free en ssh avec ce user. Cela apporterait de l'eau à ton moulin.
Si cela fonctionne, comme je l'ai dit précédemment, phpldapadmin a plus d'intérêt que ce que j'avais pensé.

Ce qui est un peu fort tout de même, c'est qu'il n'y a aucune explication sur le sujet de la part des développeurs Nas4Free.
Une petite explication de 10 lignes, ce n'est pas très long à faire et cela nous éviterait de jouer aux devinettes.

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 10 Jan 2015 23:47
by laster13
Bonsoir,

C est exactement le test que je t'ai presenté dans mon post précédent. J ai compilé dans une jail Openldap avec la base mdb. J ai créé dans la base mdb un user associe a un groupe et je me suis connecté avec sur Nas4free en ssh. Je précise que le user n était pas dans la base nas4free.

Effectivement mon post n était pas très explicite concernant le déroulement du test.

Re: Serveur OpenLDAP Nas4Free

Posted: 11 Jan 2015 00:39
by velivole18
Bonsoir,

Rassures-toi Laster13, ton post était très clair.
C'est juste que j'ai reformulé à ma façon pour voir si j'ai bien compris.
A priori, j'ai bien compris. :D

Pour le problème dans le log à la fin, peut-être vaut-il mieux commencer par un test sans clé, comme nous l'avions fait pendant le s vacances de noël ?
Quand cela fonctionnera, on cherche le pb des clés.

Ce soir je tente d'installer phpldapadmin. Mais sur mon vieux PC, c'est très très long.
Ensuite j'installerai Apache. Comment fais-tu pour l'installer ? Je peux trouver l'explication dans un autre jail ?
C'est quoi le port pour installer Apache ?

Merci.

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 11 Jan 2015 10:22
by laster13
Bonjour,

Voilà comment j'ai procédé:
J'ai créé une jail avec TheBrig et ensuite j'ai compilé openldap24-server avec les options suivantes:

Code: Select all

cd /usr/ports/net/openldap24-server

Code: Select all

make config
-DYNAMIC_BACKENDS
-MDB
-PPOLICY
-SYNCPROV

Code: Select all

make install
Mon fichier slapd

Code: Select all

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include		/usr/local/etc/openldap/schema/core.schema
# Schémas requis pour les comptes Posix
include        /usr/local/etc/openldap/schema/cosine.schema
include        /usr/local/etc/openldap/schema/inetorgperson.schema
include        /usr/local/etc/openldap/schema/nis.schema



# Define global ACLs to disable default read access.

# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral	ldap://root.openldap.org

pidfile		/var/run/openldap/slapd.pid
argsfile	/var/run/openldap/slapd.args

# Load dynamic backend modules:
modulepath	/usr/local/libexec/openldap
moduleload	back_mdb
#moduleload	back_ldap



# Sample security restrictions
#	Require integrity protection (prevent hijacking)
#	Require 112-bit (3DES or better) encryption for updates
#	Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64

# Sample access control policy:
#	Root DSE: allow anyone to read it
#	Subschema (sub)entry DSE: allow anyone to read it
#	Other DSEs:
#		Allow self write access
#		Allow authenticated users read access
#		Allow anonymous users to authenticate
#	Directives needed to implement policy:
#access to dn.base="" by * read
#access to dn.base="cn=manager" by * read
#access to *
#	by self write
#	by users read
#	by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn.  (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!

#######################################################################
# backend database definitions
#######################################################################

database	mdb
# maxsize		1073741824
suffix		"dc=julp,dc=com"
rootdn		"cn=manager,dc=julp,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw	 {MD5}feSlkL+wVCSXPBHPOnFPSA==
# The database directory MUST exist prior to running slapd AND 
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory	/var/db/openldap-data
# Indices to maintain
index	objectClass	eq
index    cn,sn,uid,displayName    pres,sub,eq
index    uidNumber,gidNumber      eq
Et enfin, ce que je n'avais pas fait auparavant, c'est de modifier le propriétaire des fichiers où sont stockées les données

Code: Select all

chmod -R u=rwx,go= /var/db/openldap-data
chown -R ldap:ldap /var/db/openldap-data
Alors concernant le fichier ldap.conf qui se trouve dans le dossier "/usr/local/etc/openldap/", si je ne configure pas, la commande ldapsearch me renvoi une base vide mais le client Nas4free fonctionne quand même... Je n'ai pas essayé avec ldapadd voir si la base s'incrémente sans ce fichier... pour mes tests, je l'ai quand même configuré ainsi:
uri ldap://192.168.0.150:389
base dc=julp,dc=com
l'ip est celle de ma jail donc du serveur openldap

Voilà pour le serveur, c'est tout. Concernant le client de nas4free, je n'ai rien modifié, il est d'origine parfaitement configuré.
ldap.PNG
Mon fichier ldif utilisé pour l utilisateur et le groupe est dans le post au dessus. Pour le mot de passe utilisateur j'ai utilisé md5 en générant un mot de passe avec la commande "slappasswd -h '{MD5}'" (utilisé également dans slapd.conf pour rootpw).

Concernant phpldapadmin et apache, j'ai suivi ce tuto à la lettre et l'installation s'est parfaitement déroulée.. reussi du 1er coup, aucune difficultées majeures. Par contre, par la suite on pourra remplacer apache par lighttpd avec le mode https. Il suffira de modifier le fichier que j'avais préparé pour 'instalation de calibre... si tu le juges nécessaire pour la sécurité. Pour apache tu choisis le port que tu veux, tu verras c'est bien expliqué.. j'avais mis le 81 pour ne pas interférer avec Nas4free qui utilise déjà le 80 par défaut car apache utilise également le port 80 par défaut.

le tuto date d'aout 2014 donc très récent ;)
http://loga.us/2014/08/17/openldap-and- ... ldapadmin/

Il faut d'abord installer openldap avant phpldapadmin et le tout dans la même jail.
velivole18 wrote:Pour le problème dans le log à la fin, peut-être vaut-il mieux commencer par un test sans clé, comme nous l'avions fait pendant le s vacances de noël ?
Quand cela fonctionnera, on cherche le pb des clés.
Est ce que tu peux me préciser aux quelles clés tu fais référence, si ce sont celles de TLS je ne l ai pas fait. Le seul cryptage que j'ai utilisé concerne le mot de passe utilisateur en md5. Est ce de cela dont tu parles?

Enfin pour terminer, et à considérer qu'effectivement je ne me trompe pas (c'est loin d'être sur, juste une supposition pour l'instant) concernant le fait que les deux bases ne puissent pas communiquer entre elles, je considère que cela n'est pas forcément gênant de passer par phpldapadmin plutôt que par l'interface Nas4free. La démarche reste identique même si la philosophie en terme de fonctionnement laisse à désirer.

Concernant les messages d'erreur dans le log, lorsqu'on tente de créer un utilisateur via l'interface de nas4free, je n'ai pas d'explication.

Je m'absente pour la journée, je ne pourrai donc pas poursuivre aujourd hui et pense à faire tes devoirs avant ce soir :lol: .

Re: Serveur OpenLDAP Nas4Free

Posted: 11 Jan 2015 18:39
by laster13
Bonsoir,

J'ai quelque peu modifié le fichier ldif au niveau de l'utilisateur
dn: cn=Patrick Poivre d'Arvor,ou=Utilisateurs,dc=julp,dc=com
cn: Patrick Poivre d'Arvor
sn: ppda
objectclass: top
objectclass: person
objectclass: posixAccount
objectclass: shadowAccount
uid: ppda
uidnumber: 2000
gidnumber: 0
#gecos: Patrick Poivre d'Arvor
loginShell: /bin/bash
homeDirectory: /mnt/pool1/Photos
userpassword: xxxxxxx
Et cette fois j'ai une connection parfaite et en plus directement ciblé sur le dossier photos comme je le lui ai précisé
login as: ppda
ppda@192.168.0.21's password:
Last login: Sun Jan 11 18:36:01 2015 from 192.168.0.11
Welcome to NAS4Free!
nas4free ~/ ppda~$
Ouf cela commence à payer :D

Re: Serveur OpenLDAP Nas4Free

Posted: 12 Jan 2015 19:58
by laster13
Bonsoir,

J'ai installé apache et phpldapadmin et voilà ce que cela donne avec ma base précédente crée en ligne de commande.

Image

Re: Serveur OpenLDAP Nas4Free

Posted: 12 Jan 2015 21:33
by velivole18
Bonsoir,

J'ai aussi installé phpldapadmin et Apache, mais rien ne se lance.
J'ai tellement bidouillé depuis plusieurs jours ...
Je vais recommencer dans une nouvelle jail propre.
Je vais relire tous tes post et faire un point sur les install de phpldapadmin, Apache et OpenLdap.
Je te tiens au courant.

Après cogitation, tu as raison et tout est logique.
Ce n'est pas à Nas4Free de gérer la base Ldap.
On la gère via un outil client dédié ou via une console pour l'ensemble de ses clients (Nas4Free et autres PC).
Et Nas4Free tape dedans pour aller chercher les infos.
Avec mon esprit tordu, je ne pouvais pas voir les choses dans l'ordre.

Cela fait tout de même plaisir de voir phpldapadmin tourner sur Nas4Free !
Mais où trouves-tu le temps ???

Cordialement.

Re: Serveur OpenLDAP Nas4Free

Posted: 12 Jan 2015 22:13
by laster13
Bonsoir,

Concernant phpldapadmin, moi aussi j'ai eu des soucis pour le démarrage bien que l'ayant déjà fait à noël. En fait par défaut phpldapadmin est installé dans le dossier "/usr/local/www" de la jail et par contre apache définit son DocumentRoot dans "/usr/local/www/apache24/data". Il te faut donc juste modifier ces 2 lignes dans "/usr/local/etc/apache24/httpd.conf"

Code: Select all

DocumentRoot "/usr/local/www"
<Directory "/usr/local/www">
J'ai laissé le port 80 par défaut

Et là cela devrait être bon.

J'ai un peu navigué dans ldaphpadmin et çà a l'air beaucoup plus simple et convivial qu'en ligne de commande. Ce logiciel semble être très abordable et la prise en main assez simple.

C'est vrai que j'ai passé du temps sur notre projet mais à vrai dire j'y ai pris vraiment du plaisir. On a rencontré des difficultés, des moments de découragement et de plaisirs intenses lorsqu'on avait l'impression d'avancer d'un pas :mrgreen: bref je me suis éclaté. Lorsqu'on aura fini et là maintenant je ne doute plus qu'on finalise notre tuto, on pourra s'attaquer à autre chose :lol: