PDC samba, openldap avec back-end SQL

PDC samba, openldap avec back-end SQL - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 29-03-2005 à 19:24:39    

Bonjour,
J'ai un projet à mettre en place sur un serveur debian (sarge). Il faudrait, via une interface PHP, pouvoir créer des comptes utilisateurs pour un domaine samba + openldap, les comptes étant sauvegardés dans une base mysql. Je recherche un peu de doc sur le sujet. Si vous avez déjà fait ce genre de chose ou que vous avez des liens interessants n'hésitez pas ! En vous remerciant d'avance.
 
EDIT : changements
distribution : ubuntu 5.04
sgbdr : postgresql


Message édité par phoenix-dark le 29-04-2005 à 10:54:49

---------------
Pingouins dans les champs, hiver méchant.
Reply

Marsh Posté le 29-03-2005 à 19:24:39   

Reply

Marsh Posté le 30-03-2005 à 00:32:27    

Salut,
 
Je ne suis pas sûr d'avoir bien saisi ta question ?
Tu désires mettre en place un samba/LDAP + rentrer les comptes via une interface web => http://phpldapadmin.sourceforge.net/
 
Je ne comprends pas pourquoi tu évoques le MySQL ??
Si tes comptes sont déjà stockés dans une bdd, tu peux toujours les extraire et les transformer au format LDIF avec le langage de script que tu préfères (e perl ca se fait très bien ;-) )
 
@+
Nobody

Reply

Marsh Posté le 30-03-2005 à 07:53:20    

L'interface web doit être suffisament simple pour qu'une secrétaire puisse créer des comptes.
 
En fait je ne veux pas stocker les comptes dans une db berkeley mais dans une base mysql.
 
Merci beaucoup pour ton lien !


---------------
Pingouins dans les champs, hiver méchant.
Reply

Marsh Posté le 30-03-2005 à 20:27:12    

Mais alors pourquoi faire du samba/LDAP ?
 
Tu peux toujours les entrer dans une base MySQL et ensuite les pousser sur du LDAP !! Mais je ne pense pas qu'il existe à ce jour un produit proprio/OpenSource qui le fasse ...
Je pense que phpldapadmin, suivi d'une petite formation préalable, est assez simple d'emploi.
 
Pourquoi ne veux tu pas les stocker dans db berkeley ?

Reply

Marsh Posté le 30-03-2005 à 22:13:02    

Je fais le projet avec un pote et on y réfléchit. La base c'est samba/openldap et j'ai trouvé plusieurs tuto interessant sur le web.  
En fait selon lui il y a beaucoup de comptes à stocker et ce serait plus interessant d'utiliser mysql (c'est aussi pour en apprendre un peu plus). Il me semble que c'ets possible de le faire, sinon tant pis.
Pour phpldapadmin je l'ai essayé ce matin j'ai bien aimé ! Cependant je pense qu'on codera l'interface php nous même. Ce bout du projet est moins important, on fera une page vraiment trés légère. Il faut que la création de compte soit accessible à la secrétaire mais qu'elle ne touche à rien d'autre.
Il se peut si on a fini rapidement qu'on rajoute une partie certificats SSL. C'est possible d'intégrer ça dans un projet de ce genre ?
En tout cas merci d'avoir répondu à mon post, a+ !


---------------
Pingouins dans les champs, hiver méchant.
Reply

Marsh Posté le 30-03-2005 à 23:22:38    

Projet interressant  :wahoo:  
 
Combien de comptes à stocker ??
Par contre, je voudrai juste appuyer sur l'implémentation du protocole LDAP sur ce type d'architecture, il est fait pour ça !!!
MySQL va juste t'apporter un "plus" en écriture, or tu as juste un besoin en lecture.
Sinon, fais tout simplement du Samba-MySQL (backend d'authentification).
 
De plus, avec Samba/LDAP, tu ne stockes pas les comptes, tu vas juste y stocker des attributs, identifiants, ect ...
Il faudrait réellement en avoir beaucoup beaucoup pour pouvoir écarter le choix de LDAP et pis même, si tu en as tant que ça, tu peux toujours dédié des branches ... N'oublies pas la valeur ajoutée d'un annuaire LDAP, (SMTP, IMAP, POP3, GROUPWARE et même des imprimantes, sisi !!)
 
Sinon, pour 2 secrétaires (charmantes  :D ), une fois, je leur avais fait une interface vraiment simpliste en XUL pour pouvoir administrer un postfix/LDAP, je m'étais inspiré du projet opensource posfixadmin (simple et claire).
Si ça peut te donner des idées ;-)
 
Bon courage.

Reply

Marsh Posté le 26-04-2005 à 12:48:21    

petite remontée de topic pour expliquer où on en est.
On s'est partagé la tâche en deux avec mon pote.
Je me suis occupé de faire samba/ldap tandis que mon pote s'occupait de faire ldap avec un backend mysql. On bloque dès le départ à cause d'odbc. J'ai donc essayé de mon côté de voir ce que je pouvais faire.
 

Code :
  1. apt-get install libiodbc2 iodbc libmyodbc


 
j'ai fait un cp /usr/lib/odbc/* /usr/lib/
 
mon fichier /etc/odbc.ini :

Code :
  1. [ODBC Data Sources]
  2. ldap = MySQL LDAP DSN
  3. [ldap]
  4. Driver          = /usr/lib/libmyodbc.so
  5. Description     = OpenLDAP Database
  6. Host            = localhost
  7. ServerType      = MySQL
  8. Port            = 3306
  9. FetchBufferSize = 99
  10. User            = ldap
  11. Password        = ldap
  12. Database        = ldap
  13. ReadOnly        = no
  14. Socket          = /var/run/mysqld/mysqld.sock
  15. [ODBC]
  16. InstallDir=/usr/lib


 
mon fichier /etc/odbcinst.ini :

Code :
  1. [ODBC Drivers]
  2. MySQL = Installed
  3. [MySQL]
  4. Description=ODBC for MySQL
  5. Driver=/usr/lib/libmyodbc.so


 
j'ai bien créé la base ldap dans mysql. J'ai également fait :

Code :
  1. grant all privileges on ldap.* to 'ldap'@'localhost' identified by 'ldap' with grant option;


et :

Code :
  1. mysql -u ldap -p < backsql_create.sql ldap
  2. mysql -u ldap -p < testdb_create.sql ldap


 
J'ai alors voulu testé avec iodbctest et voilà ce que ça donne :
 

Code :
  1. iODBC Demonstration program
  2. This program shows an interactive SQL processor
  3. Driver Manager: 03.52.0205.0204
  4. Enter ODBC connect string (? shows list): ?
  5. DSN                              | Driver
  6. ------------------------------------------------------------------------------
  7. ldap                             | MySQL LDAP DSN
  8. Enter ODBC connect string (? shows list): DSN=ldap
  9. 1: SQLDriverConnect = [MySQL][ODBC 3.51 Driver]No DSN entered (516) SQLSTATE=HY000
  10. 1: ODBC_Connect = [MySQL][ODBC 3.51 Driver]No DSN entered (516) SQLSTATE=HY000
  11. Have a nice day.


 
voilà où on en est. Si quelqu'un pouvait nous aider ce serait cool. Je reviendrai poster nos avancées (éventuelles :) )


---------------
Pingouins dans les champs, hiver méchant.
Reply

Marsh Posté le 29-04-2005 à 11:45:17    

Il y a eu beaucoup de changements.
On a eu quelques difficultés à utiliser iodbc (gestionnaire de drivers odbc) avec myodbc (driver odbc pour mysql) sur la sarge. Il en était de même avec postgresql (driver odbc : odbc-postgresql). J'ai essayé de le faire sur ma machine perso (sous kubuntu 5.04) en utilisant postgresql ça a marché nickel on a donc décidé de changer de distrib et de sgbdr.
 
voilà le détail :
 

Code :
  1. sudo apt-get install postgresql odbc-postgresql iodbc libiodbc2 libiodbc2-dev


 
postgresql : le sgbdr
odbc-postgresql : le driver odbc
iodbc : le gestionnaire
libiodbc2-dev : contient le fichier sql.h nécessaire à la compilation de openldap avec le support d'un back-end sql
 
le fichier /etc/odbc.ini doit ressembler à ça :
 

Code :
  1. [ODBC Data Sources]
  2. pgsql=postgresql
  3. ;pgsql est le dsn, c'est à dire le nom de la source de données odbc. postgresql est le nom du driver odbc à utiliser (à indiquer dans /etc/odbcinst.ini)
  4. [pgsql]
  5. Driver=/usr/lib/odbc/psqlodbc.so
  6. Description=Connexion à LDAP/POSTGRESQL
  7. Servername=localhost ;la machine sur laquelle tourne postgresql
  8. Port=5432 ;le port de postgresql
  9. Protocol=6.4 ;je sais pas trop quoi mettre ici, 7.x devrait marcher
  10. FetchBufferSize=99
  11. Username=test ;nom d'utilisateur de la base de données
  12. Password=test ;mot de passe de cet utilisateur
  13. Database=pg_ldap ;nom de la base de données
  14. ReadOnly=no
  15. Debug=1
  16. CommLog=1
  17. [ODBC]
  18. InstallDir=/usr/lib/odbc


 
fichier /etc/odbcinst.ini :
 

Code :
  1. [postgresql]
  2. Description=ODBC pour PostgreSQL
  3. Driver=/usr/lib/odbc/psqlodbc.so
  4. [ODBC]
  5. Trace=1
  6. Debug=1
  7. Pooling=No


 
On crée la base de données pg_ldap et l'utilisateur test sous l'identité postgres :

Code :
  1. sudo su - postgres
  2. createdb pg_ldap
  3. createuser --no-createdb --no-adduser --password test


au prompt password on donnera le mot de passe test (ce que vous voulez, tout comme le nom d'utilisateur et le nom de la bdd, le tout étant de donner les bons paramètres dans /etc/odbc.ini)
 
Il serait bon d'éditer le fichier /etc/postgresql/pg_hba.conf pour gérer les accés à postgresql et les méthodes d'authentification (typiquement password = avec mot de passe, trust = sans mot de passe)
 
A ce stade on doit pouvoir tester la connexion odbc :

Code :
  1. iodbctest
  2. iODBC Demonstration program
  3. This program shows an interactive SQL processor
  4. Driver Manager: 03.52.0001.0928
  5. Enter ODBC connect string (? shows list): ?
  6. DSN                              | Driver
  7. ------------------------------------------------------------------------------
  8. pgsql                            | postgresql
  9. Enter ODBC connect string (? shows list): dsn=pgsql
  10. Driver: 07.03.0200 (libpsqlodbc.so)
  11. SQL>


 
Si vous avez le prompt SQL c'est bon.
 
J'ai ensuite compiler openldap à partir des sources. http://www.openldap.org/software/download/
J'ai choisi de prendre la dernière version stable : 2.2.24
 

Code :
  1. tar xzf openldap-version.tgz
  2. cd openldap-version
  3. ./configure --enable-sql --without-cyrus-sasl --disable-bdb --enable-crypt
  4. make depend
  5. make
  6. make install


 
le fichier de conf se trouve alors ici : /usr/local/etc/openldap/slapd.conf
l'exécutable ici : /usr/local/libexec/slapd
 
lancer slapd avec l'option -d 1 permet d'avoir les message de debug et donc de voir les eventuel erreurs.
pour un exemple de slapd.conf et pour la suite je vous renvoie sur le tuto que j'ai suivi : http://www.samse.fr/GPL/ldap_pg/HOWTO/index.html
Pour l'option dbname du slapd.conf, il ne faut pas mettre le nom de la base de données mais le DSN.
 
Toutes les commandes de cette page http://www.samse.fr/GPL/ldap_pg/HOWTO/x132.html ont fonctionné sauf la dernière. Le message d'erreur m'indique qu'il faut utiliser une authentification (plus) forte. Je penche du côté de sasl. Il faudra donc changer les options utilisées au ./configure
 
Je sais pas quel paquet installer pour ubuntu (je préfèrerai nettement un paquet à des sources)
Je ne trouve pas de paquet cyrus-sasl ni saslauthd  :??:
Comme d'hab si vous avez des renseignements à ce niveau, je prends !
C'est tout pour l'instant  :)
Aprés ça j'enchaine sur samba. Je cherche également des renseignements concernant l'interface php qu'on veut écrire.
Faudra-t-il passer par odbc ? ldap ? ou s'adresser directement à postgresql ? Dans ce dernier cas est-ce plus difficile que php/mysql (qu'on trouve plus couramment).


Message édité par phoenix-dark le 29-04-2005 à 11:53:55

---------------
Pingouins dans les champs, hiver méchant.
Reply

Marsh Posté le 29-04-2005 à 19:30:00    


A mon avis perso (qui vaut ce qu'il vaut hein mais
j'ai quand meme un peut d'experience dans les ldap
que ce soit openldap ou iplanet) utiliser OpenLDAP
avec MySQL ce n'est pas du tout un bonne idée en terme
de performance et de possibilitée au niveau du ldap.
 
Remarque mon avis est partagé par l'equipe OpenLDAP: http://www.openldap.org/faq/data/cache/378.html
.
 
Deuxieme choses si vous continuez quand meme a utiliser OpenLDAP + MySQL, n'esperez pas pouvoir editer la base
en SQL et l'interroger en Ldap. Je vous le dit tout de
suite ca passera pas sans douleurs (notamment les index
qui vont pas aimer).
 
Aussi voir: http://www.openldap.org/faq/data/cache/978.html
Ldap+MySQL/PostgreSQL: http://www.flatmtn.com/computer/Linux-LDAP.html
 

Reply

Marsh Posté le 29-04-2005 à 20:29:44    

la back-end sql c'est principalement pour que ce soit plus simple pour nous avec php. Je connais trés mal ldap (c'est peu dire, en fait je découvre). Si on abandonne le back-end postgresql on utilisera une Berkeley DB alors je suppose ? Sais-tu si c'est difficile d'interroger la base avec php ?
Si c'est pas beaucoup plus difficile, ça vaudra sûrement plus le coût de revenir à un fonctionnement classique. D'autant qu'on pourra certainement utiliser directement les paquets et pas les sources. Merci pour ton post en tout cas.


---------------
Pingouins dans les champs, hiver méchant.
Reply

Marsh Posté le 29-04-2005 à 20:29:44   

Reply

Marsh Posté le 29-04-2005 à 23:58:27    

Plus simple ?
 
A moins avis ca va etre beaucoup plus compliquer de comprendre comment OpenLDAP stocke ses données dans la base SQL (et de les reformer) que de comprendre comment faire une requete ldap en php :)
 
Note il faut abandonner l'idee d'interroger le backend directement vous détruirez l'integritée de l'annuaire
et ses index.
 
Et le plus compliqué dans OpenLDAP c'est pas les requetes  
de lecture ou ecriture en ldap mais bien la creation
des accesslist en OpenLDAP :)
 
A priori le ldap en php c'est pas compliqué:  
http://fr.php.net/ldap


Message édité par MaxMaverick le 30-04-2005 à 00:00:57
Reply

Marsh Posté le 02-05-2005 à 09:23:00    

On y a réflechi un peu. On utilisera pas l'annuaire directement via SQL ça semble évident maintenant. On s'en servira directement avec des requêtes LDAP (grand merci pour le dernier lien c'est exactement ce que je cherchais). Maintenant qu'est-ce que ça change d'utiliser un back-end SQL ou BDB ? On l'interroge de la même façon, c'est l'annuaire qui se charge de la communication avec son back-end non ?


---------------
Pingouins dans les champs, hiver méchant.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed