LDIF
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Domaine | Format d'échange LDAP |
| Extension | .ldif
|
| Commandes | ldapadd · ldapmodify · ldapdelete
|
| RFC | RFC 2849 |
| Voir aussi | LDAP · OPENLDAP · Ldapsearch |
Le format LDIF (LDAP Data Interchange Format, RFC 2849) décrit en texte brut des
opérations sur un annuaire LDAP : création, modification, suppression d'entrées. C'est le
format d'entrée des commandes ldapadd, ldapmodify et
ldapdelete, aussi bien sous OpenLDAP que sous 389 Directory Server.
Création d'utilisateurs
Utilisateur simple
dn: uid=jdupont,ou=users,dc=exemple,dc=com
changetype: add
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: jdupont
cn: Jean Dupont
sn: Dupont
givenName: Jean
mail: jean.dupont@exemple.com
userPassword: {SSHA}MotDePasseHashe
Utilisateur complet (attributs POSIX + shadow)
dn: uid=mmartin,ou=users,dc=exemple,dc=com
changetype: add
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: mmartin
cn: Marie Martin
sn: Martin
givenName: Marie
mail: marie.martin@exemple.com
title: Développeuse Senior
userPassword: {SSHA}MotDePasseHashe
loginShell: /bin/bash
homeDirectory: /home/mmartin
uidNumber: 10001
gidNumber: 10001
gecos: Marie Martin
description: Développeuse backend
Pour créer plusieurs utilisateurs en une fois, il suffit d'enchaîner plusieurs blocs
dn:/changetype: add dans le même fichier, séparés par une ligne
vide.
Modification d'utilisateurs
Remplacement, ajout, suppression d'un attribut
dn: uid=jdupont,ou=users,dc=exemple,dc=com
changetype: modify
replace: mail
mail: jean.dupont.nouveau@exemple.com
dn: uid=jdupont,ou=users,dc=exemple,dc=com
changetype: modify
add: telephoneNumber
telephoneNumber: +33 1 98 76 54 32
Modifications multiples (séparateur -)
dn: uid=mmartin,ou=users,dc=exemple,dc=com
changetype: modify
replace: title
title: Architecte Logiciel
-
add: description
description: Responsable de l'architecture microservices
-
delete: mobile
Renommage / déplacement (modrdn)
dn: uid=jdupont,ou=users,dc=exemple,dc=com
changetype: modrdn
newrdn: uid=jdupont
deleteoldrdn: 0
newsuperior: ou=anciens-users,dc=exemple,dc=com
Suppression
dn: uid=jdupont,ou=users,dc=exemple,dc=com
changetype: delete
Suppression récursive d'une OU entière — pas d'équivalent LDIF standard, utiliser directement
l'option -r de la commande :
ldapdelete -r "ou=temp,dc=exemple,dc=com"
Gestion du statut d'un compte
# Verrouillage (389 Directory Server)
dn: uid=jdupont,ou=users,dc=exemple,dc=com
changetype: modify
replace: nsAccountLock
nsAccountLock: true
# Verrouillage (OpenLDAP + overlay ppolicy) ; déverrouillage : delete pwdAccountLockedTime
dn: uid=jdupont,ou=users,dc=exemple,dc=com
changetype: modify
add: pwdAccountLockedTime
pwdAccountLockedTime: 000001010000Z
Opérations sur les groupes
dn: cn=developers,ou=groups,dc=exemple,dc=com
changetype: add
objectClass: top
objectClass: groupOfNames
cn: developers
description: Groupe des développeurs
member: uid=mmartin,ou=users,dc=exemple,dc=com
# Ajout d'un membre à un groupe existant
dn: cn=developers,ou=groups,dc=exemple,dc=com
changetype: modify
add: member
member: uid=jdupont,ou=users,dc=exemple,dc=com
Application des fichiers LDIF
ldapadd -x -D "cn=admin,dc=exemple,dc=com" -W -f create-user.ldif
ldapmodify -x -D "cn=admin,dc=exemple,dc=com" -W -f modify-user.ldif
ldapdelete -x -D "cn=admin,dc=exemple,dc=com" -W "uid=jdupont,ou=users,dc=exemple,dc=com"
# via TLS/SSL
ldapmodify -x -H ldaps://ldap.exemple.com:636 -D "cn=admin,dc=exemple,dc=com" -W -f modify-user.ldif
# simulation sans appliquer (-n), utile pour valider avant application
ldapmodify -n -x -D "cn=admin,dc=exemple,dc=com" -W -f modify-user.ldif
Bonnes pratiques
- Sauvegarder avant toute modification massive :
ldapsearch -x -LLL -b "dc=exemple,dc=com" > backup-$(date +%Y%m%d).ldif - Tester d'abord sur un environnement de développement, et valider avec l'option
-n(simulation) avant application réelle. - Ne jamais stocker de mot de passe en clair dans un LDIF — toujours un hash (
{SSHA}viaslappasswd). - Restreindre les droits sur les fichiers LDIF contenant des données sensibles (
chmod 600 *.ldif) et les versionner dans Git.
Ressources
- RFC 2849 — The LDAP Data Interchange Format (LDIF)
- RFC 4510-4519 — LDAP Technical Specification Road Map
- https://www.openldap.org/doc/ — documentation OpenLDAP
Voir aussi
- LDAP — structure d'un annuaire (DN, DC, OU, CN)
- OPENLDAP — installation et administration d'un serveur OpenLDAP
- Ldapsearch — interroger l'annuaire avant de le modifier