Résolu Modifier fichier ldif et mettre à jour ldap ensuite

Solutions (42)
Tags :
  • Config PC
  • Mise à jour
  • Mot de passe
  • Ldap
  • Internet
|
Bonjour,

J'ai un problème avec mon ldap. J'ai créé un fichier ldif pour pouvoir entrer des utilisateur dedan, le problème c'est que ldap ne prend pas les mises à jour que je fais dans ce fichier. J'ai essayé de le supprimer puis de le remettre avec la commande ldapadd mais il refuse de le rajouter et il me met le message suivant : ldap_add: Already exists (68)

je ne sais vraiment pas comment faire, merci d'avance pour vos réponse
Contenus similaires
Meilleure solution
partage
|
Bonjour,
Je donnais juste un exemple pour illustrer mon explication.
Dans ton cas, je suppose que tu as un truc simple :

Un annuaire avec une base et un admin (installation par défaut) : "cn=admin,dc=mairie,dc=mende"

La première chose à faire dans ton cas c'est de créer la structure de ta base, c'est ce que je montre dans mon exemple, tant que tu n'aurras pas créé cette structure, tu ne pourras pas utiliser les outils classiques.

Si tu repars de zéro :
1-tu installes les paquets nécessaires
apt-get install slapd ldap-utils
2-tu arrête le serveur
/etc/init.d/slapd stop
3-tu fais le ménage !!!!!!!!!!!!!!!!!!!!! attention, ça supprime TOUTES les bases sans retour arrière possible
rm -rf /var/lib/ldap/* ; rm -rf /etc/ldap/slapd.d
4-tu reconfigure ton annuaire
dpkg-reconfigure slapd

Voulez-vous omettre la configuration d'OpenLDAP ? Non
Nom de domaine : mairie.mende
Nom d'entité (« organization ») : Mairie de Mende
Mot de passe de l'administrateur : superpassword
Mot de passe de l'administrateur : superpassword
Module de base de données à utiliser : HDB
Faut-il supprimer la base de données à la purge du paquet ? (à toi de voir)
Faut-il autoriser le protocole LDAPv2 ? Non (le LDAPv2 est déconseillé)

A ce moment tu as un annuaire qui référence une base dont le suffixe est [dc=mairie,dc=mende] et l'admin est [cn=admin,dc=mairie,dc=mende]
Cette base devrait être administrable avec les outils classiques.

Si ça ne marche pas (list failed) c'est qu'elle est VIDE (elle n'a même pas de racine), il faut donc l'initialiser, exemple :
Fichier : cat creation_poste.mende.ldif
  1. # On créé la racine de la base
  2. dn: dc=poste,dc=mende
  3. objectClass: top
  4. objectClass: dcObject
  5. objectclass: organization
  6. o: Poste de Mende
  7. dc: poste
  8. description: La poste de Mende


ldapadd -x -D cn=admin,dc=poste,dc=mende -W -f creation_poste.mende.ldif
Enter LDAP Password: ***************
adding new entry "dc=poste,dc=mende"

L'admin de cette base est celui référencé dans son fichier de config

Fichier /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif

dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=poste,dc=mende
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
s auth by dn="cn=admin,dc=poste,dc=mende" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by self write by dn="cn=admin,dc=poste,dc=mende" write by
* read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=poste,dc=mende
olcRootPW:: e1NTSEF9YjltY3kvTG8wbEY5OURDTlZnbFVOamRkVTh6UStaNms=
olcDbCheckpoint: 512 30
olcDbConfig: {0}set_cachesize 0 2097152 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcDbIndex: objectClass eq
structuralObjectClass: olcHdbConfig
entryUUID: def70538-1d9e-1030-9d1e-6f66cff1815e
creatorsName: cn=admin,cn=config
createTimestamp: 20110528175133Z
entryCSN: 20110528175133.988034Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20110528175133Z

Pour le reste, ceux sont les ACL qui définissent les droits de tel objet sur tel autre


, dc=.... n'est PAS un groupe, c'est un dcObject (une racine d'un arbre) prévu pour contenir d'autres objets ldap, on ne peut pas supprimer un dc comme ça (ça revient à supprimer la base)

Je te déconseille d'utiliser ldapdelete tant que tu ne sera pas familier avec le ldap


Sinon, tu peux toujours revenir à l'ancienne forme en .conf, elle fonctionne toujours mais ne permet pas de faire des modifications dans redémarrer l'annuaire, pour ça il suffit de renommer le dossier slapd.d (dans /etc/ldap) en autre chose et de recréer un fichier slapd.conf en se servant des infos des fichiers ldif
  • Commenter cette solution |
Score
0
òh
òi
|
C'est bon ça fonctionne :) 
Pour ceux que ça intéresse ce tuto est très intéressant : http://beaussier.developpez.com/articles/php/ldap/phpld...

Encore merci pour toutes les réponses :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
je l'ai rajouté mais il ne se passe rien non plus (j'ai réussi à me connecter en admin, j'avais oublié de mettre admin dans la partie ldap_bind)
  • Commenter cette réponse |
Score
0
òh
òi
|
je ne sais pas quels schémas tu utilise, donc je pars du principe qu'il s'agit de ceux par défaut :

( 2.16.840.1.113730.3.2.2
NAME 'inetOrgPerson'
Spoiler
SUP organizationalPerson
STRUCTURAL
MAY (
audio $ businessCategory $ carLicense $ departmentNumber $
displayName $ employeeNumber $ employeeType $ givenName $
homePhone $ homePostalAddress $ initials $ jpegPhoto $
labeledURI $ mail $ manager $ mobile $ o $ pager $
photo $ roomNumber $ secretary $ uid $ userCertificate $
x500uniqueIdentifier $ preferredLanguage $
userSMIMECertificate $ userPKCS12
)
)

For reference, we list the following additional attribute types that
are part of the inetOrgPerson object class. These attribute types
are inherited from organizationalPerson (which in turn is derived
from the person object class):


MUST (
cn $ objectClass $ sn
)

Spoiler
MAY (
description $ destinationIndicator $ facsimileTelephoneNumber $
internationaliSDNNumber $ l $ ou $ physicalDeliveryOfficeName $
postalAddress $ postalCode $ postOfficeBox $
preferredDeliveryMethod $ registeredAddress $ seeAlso $
st $ street $ telephoneNumber $ teletexTerminalIdentifier $
telexNumber $ title $ userPassword $ x121Address
)


Or tu n'envoie pas de sn
  • Commenter cette réponse |
Score
0
òh
òi
|
J'ai trouvé comment m'authentifier auprès de ldap : j'ai utilisé une authentification anonyme et il fallait préciser que c'était la version 3 de ldap que j'utilisé. :) 

Mais l'utilisateur malgré l'authentification réussie n'apparaît pas dans l'annuaire :( 
  • Commenter cette réponse |
Score
0
òh
òi
|
En fait je les avaient bien inclus mais ça ne marche toujours pas.

Il me semble que l'erreur est au niveau de l'authentification (je n'ai pas le message d'erreur du ldap_connect) en revanche il me retourne toujours connexion ldap échouée. Encore plus bizarre il m'affiche (alors que la connexion n'est pas bonne) inscription réussie. Pour vérifier j'ai fais : ldapsearch -xLLL -b "dc=mairie,dc=mende". L'utilisateur toto n'apparaît pas. Je ne vois pas où est l'erreur ce que j'ai fais me semble correct...

J'ai mis l'authentification, la connexion et l'ajout d'utilisateur dans le même fichier. Je te donne le fichier au cas ou :

<?php

// LDAP variables
$ldaphost = "ldap.mairie.mende"; // votre serveur LDAP
$ldapport = 389; // votre port de serveur LDAP

// Connexion LDAP
$ldapconn = ldap_connect($ldaphost, $ldapport)
or die("Impossible de se connecter au serveur LDAP $ldaphost");

?>


<?php

// Eléments d'authentification LDAP
$ldaprdn = 'dc=mairie,dc=mende'; // DN ou RDN LDAP
$ldappass = 'secret'; // Mot de passe associé

// Connexion au serveur LDAP
$ldapconn = ldap_connect("ldap.mairie.mende")
or die("Impossible de se connecter au serveur LDAP.");

if ($ldapconn) {

// Connexion au serveur LDAP
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

// Vérification de l'authentification
if ($ldapbind) {
echo "Connexion LDAP réussie...";
} else {
echo "Connexion LDAP échouée...";
}

}

?>


<?php

$fp = ldap_connect("localhost");

if ($fp) {

$r = ldap_bind($fp, "cn=admin,dc=mairie,dc=mende", "secret");

// Prépare les données
$info["cn"] = "toto";
$info["userPassword"] = "test";
$info["objectclass"] = "person";

// Ajoute les données au dossier
$r = ldap_add($fp, "cn=toto,dc=mairie,dc=mende", $info);

echo "Inscription réussie";

ldap_close($fp);

}

else {
echo "Impossible de se connecter au serveur LDAP"; }

?>
  • Commenter cette réponse |
Score
0
òh
òi
|
  • Commenter cette réponse |
Score
0
òh
òi
|
ah non. Il faut les inclure comment ?
  • Commenter cette réponse |
Score
0
òh
òi
|
tu as pensé à les inclure (include/require/...) ?

pour la suite, c'est dans le forum programmation qu'il faut aller
  • Commenter cette réponse |
Score
0
òh
òi
|
Je crois savoir d'où ça viens. J'ai créé 3 fichiers en tout, un pour la connexion à ldap, un autre avec la définition de ldap_connect et un autre comme celui si dessus.

Mais je viens de me rendre compte qu'il n'y a pas (il me semble) pas de liens entre ces 3 fichiers. L'erreur est-elle ici ???

Merci d'avance
  • Commenter cette réponse |
Score
0
òh
òi
|
D'ailleurs je crois qu'il n'arrive tout simplement pas à se connecter au serveur ldap
  • Commenter cette réponse |
Score
0
òh
òi
|
Je suis repartis de 0 pour être sûr que je n'ai pas fais de bêtises entre temps.
J'ai refais un programme en php le plus simple pour ajouter une simple information à mon ldap. Le soucis c'est que rien ne se passe non plus :( 
<?php

$fp=fopen("/etc/ldap/base.ldif","a");

$fp = ldap_connect("localhost");

$r = ldap_bind($ds, "cn=admin,dc=mairie,dc=mende", "secret");

$info["cn"] = "toto";
$info["userPassword"] = "test";
$info["objectclass"] = "person";

$r = ldap_add($fp, "cn=toto,dc=mairie,dc=mende", $info);

ldap_close($fp);
?>
  • Commenter cette réponse |
Score
0
òh
òi
|
ok merci je vais essayer ça, je te tiens au courant
  • Commenter cette réponse |
Score
0
òh
òi
|
donc j'avais bien compris...
le fichier ldif que tu créé sert à un CLIENT LDAP pour entrer des informations dans la base, ce n'est PAS ta base

donc reprends ton code PHP et au lieu de lui faire créer des fichiers ldif, fait lui écrire dans la BASE LDAP
http://fr2.php.net/manual/fr/ref.ldap.php
  • Commenter cette réponse |
Score
0
òh
òi
|
Je te réexplique :) 
- Je crée un fichier que j'appelle par exemple inscris.ldif dans /etc/ldap
- Ensuite à l'intérieur de ce fichier je crée un groupe :
dn: ou=inscris,dc=mairie,dc=mende
objectClass: organizationalUnit
objectClass: top
ou: inscris
- Je le rajoute à l'annuaire avec ldapadd -x -D cn=admin,dc=mairie,dc=mende -W -f inscris.ldif

Jusque là tout marche c'est là que ça se gate

Je vais sur mon formulaire que j'ai créé en php et dans lequel je rentre des informations nom,prénom,mot de passe etc...
Ces données sont écrite dans le fichier inscris.ldif comme ça :
dn: cn=toto,ou=inscris,dc=mairie,dc=mende
objectClass: account
objectClass: posixAccount
userPassword: test
description...

et maintenant quand je fais un ldapsearch il m'affiche ma base (celle que tu m'avais montré plus haut) et le groupe inscris que j'ai créé dans le fichier. Mais je n'ai pas le nouvel utilisateur.

Je me demande donc ce qui ne va pas dans ce que j'ai si c'est juste une petite erreur que je ne vois pas ou si je fais carrément fausse route ?
  • Commenter cette réponse |
Score
0
òh
òi
|
si je comprends bien, tu entre des informations dans un "fichier" via un formulaire et tu ne les retrouve pas dans la base LDAP directement ?

j'ai peur de comprendre ton problème...

admettons que j'ai mal compris, quand tu fais :
ldapadd -x -D [ DN de l'admin] -W -f [ fichier LDIF créé par ton formulaire]

il se passe quoi ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Avant de créer des utilisateurs avec le formulaire j'y ai mis un groupe que j'ai appelé inscris dans lequel seront rajoutés ceux qui passent par le formulaire. Et j'ai utilisé ldap add pour ajouter le fichier à ldap (jusque là aucun problème). Après j'ai essayé de remplir mon formulaire, les données sont bien entrées dans le fichier en question mais quand je fais un ldapsearch pour voir si les modif ont bien été faites il ne m'affiche pas le nouvel utilisateur. Je ne comprends pas pourquoi :( 
  • Commenter cette réponse |
Score
0
òh
òi
|
et ton fichier ldif, tu en fais quoi ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Moi j'ai fais un formulaire en php (qui demande la saisie du nom, prenom...) et tout ce qui est saisi je le met dans un fichier fichier.ldif. Les données que je rentre dans ce fichier sont de ce type : dn: cn=toto, dc=inscris, dc=mairie,dc=mende....

Mais après ces données ldap n'en tiens pas compte :( 

Eventuellement si tu pouvais me dire qu'est ce qui me manque pour que ça marche sa me dépannerai :) 

Encore merci pour toute ton aide :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Tu comprends mal :) 
Pour écrire dans un annuaire LDAP, il faut lui parler en LDAP (comme avec une base mysql, il faut lui parler en mysql...)
Ce que je voulais dire, c'est que si tu n'ajoute que rarement des choses dans ton annuaire, il ne sert à rien de programmer un truc, les clients ldap (ldapadd, ldapbrowser, ...) sont suffisants.

Tu peux très bien créer un formulaire qui écrit directement dans ton annuaire ldap (en php c'est très simple à faire)
  • Commenter cette réponse |
Score
0
òh
òi
|
Si je comprends bien je ne peux pas rajouter un utilisateur directement dans un fichier de ldap sans passer par phpldapadmin ou sans taper une commande de type ldapadd ? Je te demande ça parce que j'ai mis en place un formulaire qui ajoute des utilisateurs directement dans un fichier ldap que j'ai défini. Et j'aimerai que ldap se mette a jour tout seul lorsque ces données lui arrivent.
  • Commenter cette réponse |
Score
0
òh
òi
|
si c'est ponctuel, utilise une interface ldap comme celles citées plus haut
  • Commenter cette réponse |
Score
0
òh
òi
|
Maintenant que j'y suis j'aurai encore une dernière question. Comment ajouter un utilisateur directement dans un fichier ldap ? (ce fichier aurait été au préalable ajouté à l'annuaire avec ldapadd). Le but serai que moi même j'entre un utilisateur dans ce fichier et que je puisse en rajouter au fur et à mesure que j'en ai besoin.

Merci d'avance
  • Commenter cette réponse |
Score
0
òh
òi
|
ok je vais suivre ton conseil je repasse en uid

Encore merci pour ton aide :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Ca marchera dans les 2 cas (si la conf est correcte), mais il vaut mieux respecter les standards si on ne veut pas avoir de problèmes par la suite.
  • Commenter cette réponse |
Score
0
òh
òi
|
Ok je regarderai demain si ça marche avec uid mais bon l'essentiel c'est que ça marche :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Je te recommande de laisser UID dans ta conf radius car c'est standard

CN ça veut dire Common Name (Nom usuel en français), en aucun cas login (même si ça peut être utilisé pour ça)

Techniquement, tu peux utiliser indifféremment cn, uid, toto, ... comme clef de DN dans ton annuaire, c'est juste une histoire de contraintes d'annuaire et d'applications

Certains préfèrent avoir le Nom de la personne comme clef car c'est "visuel", c'est le cas par défaut dans l'Active Directory et l'eDirectory, mais ces 2 annuaires ont aussi un champs UID (ou équivalent) pour le login (qui lui DOIT être unique si tu ne veux pas avoir de problèmes)
  • Commenter cette réponse |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par lolo4842.
  • Commenter cette réponse |
Score
0
òh
òi
|
Bon je vais me répondre à moi même pour que le cn marche avec radius il faut aller dans le fichier de configuration de radius : /etc/freeradius/modules/ldap et remplacer filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})" par filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"

Merci beaucoup à tout le monde pour l'aide précieuse que vous m'avez apporté :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
désolé Maith j'ai dis une bétise en faite il c'est bien créé j'avais utilisé la mauvaise commande :
ldapsearch -xLLL -b "dc=mairie,dc=mende" uid=toto sn givenName cn
alors que celle ci a fonctionnée : ldapsearch -xLLL -b "dc=mairie,dc=mende" cn=toto sn givenName cn

Ce que tu m'a dis a bien fonctionné merci :) 

Du coup j'ai une nouvelle question : comment on peut créer un utilisateur avec un uid plutot qu'un cn ? :) 

Je n'ai pas précisé un détail, mon ldap est couplé avec un serveur radius et j'ai l'impression que freeradius ne prend pas en compte les cn.

Merci d'avance
  • Commenter cette réponse |
Score
0
òh
òi
|
Encore merci pour ta réponse. J'ai refais ce que tu m'a dis (j'ai touot remis à 0, recréé les bases...)

J'ai ensuite essayé de rajouter un groupe et un utlilisateur avec phpldapadmin jusque la tout va bien. Par contre quand j'ai voulu le rajouter à l'annuaire (vu que ce n'est pas automatique) avec ldapadd il m'affiche l'erreur suivante :
Enter LDAP Password:
adding new entry "dc=mairie,dc=mende"
ldap_add: Already exists (68)

Pourtant je n'ai encore ajouter aucun utilisateur. Je ne comprend pas ??
  • Commenter cette réponse |
Score
0
òh
òi
|
il n'y a aucun groupe dans ton ldif
l'objectclass d'un groupe est "group"

le compte "admin" dans ton ldap n'est pas nécessairement un admin, c'est juste un compte comme les autres, seules les ACL lui donneront tel ou tel droit

pour la commande, la bonne syntaxe est :
ldapadd -x -D [ DN de l'admin] -W -f [ fichier LDIF]
si tu as suivi mon poste précédent, tu dois avoir une base avec un DC valide et donc tu dois pouvoir t'y connecter avec les logiciels classiques pour gérer le contenu de ton annuaire
  • Commenter cette réponse |
Score
0
òh
òi
|
Bonjour,

Encore merci pour ta réponse :)  Je viens de me rendre compte que j'avais posté deux fois le même fichier dans ma réponse précédente le deuxième était en réalité celui la (j'ai créé deux groupe pour tester) :
# Create top-level object in domain
dn: dc=mairie,dc=mende
objectClass: top
objectClass: dcObject
objectclass: organization
o: mairie Organization
dc: mairie
description: LDAP mairie

# Admin user.
dn: cn=admin,dc=mairie,dc=mende
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: {SSHA}rxw6qXmwscPJ2cOHTJsXLEMl2AdYYuCt

dn: ou=users,dc=mairie,dc=mende
objectClass: organizationalUnit
ou: users

dn: ou=autres,dc=mairie,dc=mende
objectClass: organizationalUnit
ou: autres

A partir de cette base si je souhaite ajouter des utilisateurs je dois les créer dans ce fichier et utiliser une commande du type : ldapadd -x -D cn=admin,dc=mairie,dc=mende -W -f cn=nouvel_utilisateur,ou=user1,dc=mairie,dc=mende ?
Par contre j'aimerai savoir comment les retirer également de mon annuaire quand je les veux plus (en fait cette annuaire aura besoin d'être modifier assez régulièrement)

Encore merci pour votre patience

Cordialement
  • Commenter cette réponse |
Score
0
òh
òi
|
J'ai bien un compte admin et je peux rajouter, modifier ou enlever des entrées mais mon annuaire ldap ne prend pas en compte ces modifications. Il y a peut être un truc que j'ai mal configuré...
  • Commenter cette réponse |
Score
0
òh
òi
|
lolo4842 a dit :
Je ne comprend pas très bien l'intérêt d'un phpldapadmin si il ne peux pas modifier l'annuaire comme on le souhaite ???

moi je l'utilisais pour créer, modifier des entrées alimentés via des scripts php...
encore faut-il de se connecter avec un compte admin, sauf si tu as des acl qui justement ne t'y autorises pas !
  • Commenter cette réponse |
Score
0
òh
òi
|
merci beaucoup pour ta réponse je commence à y voir un peu plus clair.

Je suis plus précisément sous ubuntu :)  effectivement ce que je veux ce n'est pas modifier ma configuration de openldap mais ses bases (ajouter des groupes, les enlever, ajouter, supprimer des utilisateurs etc....)
Il y a quand même quelque truc que je ne comprend pas très bien. Qu'est ce que tu veux dire avec les acl qui vont avec ? et ensuite si je veux supprimer un groupe (par exemple dc=usa,dc=terre) comment je fais ? J'avais déjà essayer avec la commande ldapdelete mais j'avais une erreur qui m'était retournée (je ne sais plus laquelle, je ne reprend mon stage que lundi la je ne peux pas tester).

Je ne comprend pas très bien l'intérêt d'un phpldapadmin si il ne peux pas modifier l'annuaire comme on le souhaite ???

Je suis un peu perdu sous cette version de ldap sans son fichier slapd.conf

Merci de votre patience et de votre aide

Cordialement
  • Commenter cette réponse |
Score
0
òh
òi
|
Bonsoir,

Les 3 fichiers que tu a posté sont des fichiers de configuration pour openldap (format ldif depuis la 2.4 de mémoire, je continue à utiliser l'ancienne forme en fichier de conf même si c'est moins puissant, elle fonctionne toujours :)  )

Les clients ldap (phpldapadmin, ldapadmin, ldapbrowser, jxplorer, ...) sont fait pour modifier le contenu d'une base, pas la structure de l'annuaire, c'est donc normal que ça ne marche pas.

La question étant donc, que veux tu modifier ?
-la configuration d'openldap
-le contenu des bases

A vue de nez tu es sous Debian, tu peux donc utiliser dpkg pour configurer ton annuaire puis des fichiers ldif comme ceux que tu as posté pour modifier cette configuration (avec ldapadd, ldapmodify et ldapdelete).

Si tu veux modifier le contenu des bases (créer des gens, des groupes, ...), il faut initialiser ces bases de données (un annuaire Ldap stock ses données en base, chez Microsoft c'est le format utilisé par Exchange, avec OpenLDAP c'est du Berkeley ou du Haskell)

Admettons que ton SUPER admin (celui que tu as configuré avec dpkg) soit :
cn=admin,dc=terre
Cet admin est le roi de l'annuaire et donc de toutes les bases que tu vas créer (=======>donc mot de passe en béton armé)

Il faut initialiser la (ou les) bases(s) de ton annuaire :

Ici la base "terre" avec 2 pays

  1. # On créé la France
  2. dn: dc=france,dc=terre
  3. objectClass: top
  4. objectClass: dcObject
  5. objectclass: organization
  6. o: La France
  7. dc: france
  8. description: Racine de la France
  9.  
  10. # On créé le patron de la France (il faudra lui donner les clef de l'Elysée avec des ACL)
  11. dn: cn=niko,dc=france,dc=terre
  12. objectClass: simpleSecurityObject
  13. objectClass: organizationalRole
  14. cn: niko
  15. description: Super Niko
  16. userPassword: superpasswordquivaavec
  17.  
  18. # On créé les USA
  19. dn: dc=usa,dc=terre
  20. objectClass: top
  21. objectClass: dcObject
  22. objectclass: organization
  23. o: Les USA
  24. dc: usa
  25. description: Racine des USA
  26.  
  27. # On créé le patron des USA (il faudra lui donner les clef de la Maison Blanche avec des ACL)
  28. dn: cn=bama,dc=usa,dc=terre
  29. objectClass: simpleSecurityObject
  30. objectClass: organizationalRole
  31. cn: bama
  32. description: Super BaMa
  33. userPassword: superpasswordquivaavec
  34.  
  35. #... pour les divers pays


ldapadd -x -D cn=admin,dc=terre -W -f terre.ldif

(tu peux créer plusieurs bases, chacune avec sa config, son jeu d'ACL, ..., utilise le fichier olcDatabase={1}hdb.ldif comme modèle si besoin)

A partir de ce moment, tu peux utiliser les outils classique pour gérer le contenu de ton annuaire

Tu trouveras une bonne doc ici : http://www.linuxtopia.org/online_books/network_administ...
  • Commenter cette réponse |
Score
0
òh
òi
|
désolé pour la réponse tardive j'était parti du bureau

Je me rend compte qu'effectivement je me suis mal exprimer. En fait j'ai installé ldap et phpldapadmin pour utiliser l'interface graphique (plus convivial). Le problème est que lorsque je me connecte a phpldapadmin je vois les utilisateurs que j'ai créé directement dans ldap (normal), mais lorsque je crée un groupe ou un utilisateur à partir de phpldapadmin, je me suis rendu compte qu'aucunes modifications n'étaient prises en compte par ldap. Si je supprime un utilisateur à partir de phpldapadmin, il ne sera pas supprimé de ldap. En fait, c'est comme s'il n'y avait aucun lien entre les deux.
J'ai effectivement essayé ldapmodify mais j'ai eu une erreur que j'ai pas réussi à résoudre :
ldapmodify: modify operation type is missing at line 2, entry "cn=module,cn=config"


Ce que je voudrait c'est que phpldapadmin modifie mon annuaire quand j'entre une nouvelle donnée (ou que j'en enlève une). :) 

Si ce n'est pas possible j'aimerai avoir une autre solution (en ligne de commande par exemple)

J'ai créé 3 fichiers ldif. Voici le premier :
# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=mairie,dc=mende
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=mairie,dc=mende
olcRootPW: secret
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=mairie,dc=mende" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=mairie,dc=mende" write by * read

le deuxième pour les groupes et l'administrateur :

# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=mairie,dc=mende
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=mairie,dc=mende
olcRootPW: secret
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=mairie,dc=mende" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=mairie,dc=mende" write by * read

et le 3ème serait pour les utilisateurs j'espère que j'ai été un peu plus clair :) 

Et encore merci de m'aider c'est cool de ta part :)  Il y a un moment que je galère avec ça

Cordialement
  • Commenter cette réponse |
Score
0
òh
òi
|
Je ne comprend pas trop ce que tu veux faire mais je vais essayer de t'éclaircir les choses.

Si tu veux modifier un utilisateur déjà existant (rajouter un champ d'un schéma etc ...) tu dois utiliser la commande ldapmodify. Bien évidemment tu dois modifier ton fichier LDIF avant. Cherche sur internet la commande ldapmodify et le fichier LDIF approprié.

Par contre si tu souhaite créer un nouvel utilisateur ou quelque chose comme ça tu dois créer un fichier LDIF et utiliser la commande ldapadd.

Dis nous précisement ce que tu souhaites faire et donne nous le fichier LDIF (s'il n'est pas trop grand)

Cordialement.
  • Commenter cette réponse |
Score
0
òh
òi
|
Merci pour ta réponse freemaster

J'ai effectivement installé phpldapadmin mais quand je rajoute un utilisateur ldap ne le prend pas. C'est pour ca que je cherche une idée pour faire accepter des modifications faites directement dans les fichiers ldif à ldap.
Aurais tu une commande qui fasse cela ? j'ai cherché un moment mais sans résultat
  • Commenter cette réponse |
Score
0
òh
òi
|
ldap_add c'est pour ajouter un nouveau enregistrement, pas en modifier une déjà existante...
tu devrais plutôt utiliser ldap_modify

sinon tu devrais installer phpldapadmin pour gérer via le web ton annuaire
  • Commenter cette réponse |
Score
0
òh
òi
|
personne n'a une idée ?
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS