Creació de contingut dins del directori
Un cop instal·lat el servidor OpenLDAP, el directori es troba buit. Per fer-lo funcional i útil en un entorn empresarial, cal poblar-lo amb una estructura jeràrquica que reflecteixi l’organització real de l’empresa.
Hem optat per una estructura basada en Unitats Organitzatives (OUs) per departaments, ja que permet:
- Aplicar polítiques d’accés i permisos de forma granular per departament.
- Facilitar la cerca i gestió dels usuaris de forma ordenada.
- Escalar fàcilment afegint nous departaments o usuaris sense afectar la resta.
- Simular un entorn empresarial real, preparat per connectar clients Linux i Windows.
Estructura del directori
L’arbre del directori LDAP ha quedat organitzat de la manera següent:
dc=equipo2,dc=es
├── ou=usuaris
│ ├── ou=major
│ │ ├── uid=jfernandez
│ │ └── uid=mruiz
│ ├── ou=clientes
│ │ ├── uid=ptorres
│ │ └── uid=agomez
│ └── ou=marketing
│ ├── uid=lcastell
│ └── uid=droig
└── ou=grups
├── cn=major
├── cn=clientes
└── cn=marketing Hem creat 3 departaments (major, clientes, marketing), cadascun amb la seva pròpia OU dins d’ou=usuaris i el seu grup corresponent dins d’ou=grups. Cada usuari té tots els atributs necessaris per a un entorn posix real: uid, uidNumber, gidNumber, homeDirectory i loginShell.
Creació de les Unitats Organitzatives
El primer pas és crear les OUs, ja que els usuaris i grups han d’existir dins d’elles. L’ordre és important: les OUs pare han d’existir abans que les filles.
Arxiu ubicat a /home/vagrant/ou.ldif
# OU per a usuaris
dn: ou=usuaris,dc=equipo2,dc=es
objectClass: organizationalUnit
ou: usuaris
description: Unitat organitzativa que conte tots els usuaris de l'empresa
# OU per a grups
dn: ou=grups,dc=equipo2,dc=es
objectClass: organizationalUnit
ou: grups
description: Unitat organitzativa que conte tots els grups de l'empresa
# OU departament Major
dn: ou=major,ou=usuaris,dc=equipo2,dc=es
objectClass: organizationalUnit
ou: major
description: Departament de Comptes Major
# OU departament Clientes
dn: ou=clientes,ou=usuaris,dc=equipo2,dc=es
objectClass: organizationalUnit
ou: clientes
description: Departament d'Atencio al Client
# OU departament Marketing
dn: ou=marketing,ou=usuaris,dc=equipo2,dc=es
objectClass: organizationalUnit
ou: marketing
description: Departament de Marketing i Comunicacio
Ara hem de carregar les OUs.
ldapadd -x -D "cn=admin,dc=equipo2,dc=es" -W -f /home/vagrant/ou.ldif Les opcions del comandament signifiquen:
- x → Autenticació simple (sense SASL).
- D → DN de l’administrador LDAP per autenticar-se.
- W → Demana la contrasenya de forma interactiva.
- f → Ruta al fitxer LDIF que es vol carregar.
Creació dels Grups
Els grups permeten assignar permisos col·lectius a conjunts d’usuaris. Fem servir l’objectClass posixGroup, que és compatible amb sistemes Linux.
Arxiu ubicat a /home/vagrant/grups.ldif
# Grup Major
dn: cn=major,ou=grups,dc=equipo2,dc=es
objectClass: posixGroup
cn: major
gidNumber: 5000
description: Grup del departament de Comptes Major
# Grup Clientes
dn: cn=clientes,ou=grups,dc=equipo2,dc=es
objectClass: posixGroup
cn: clientes
gidNumber: 5001
description: Grup del departament d'Atencio al Client
# Grup Marketing
dn: cn=marketing,ou=grups,dc=equipo2,dc=es
objectClass: posixGroup
cn: marketing
gidNumber: 5002
description: Grup del departament de Marketing Comanda per carregar tots els usuaris:
ldapadd -x -D "cn=admin,dc=equipo2,dc=es" -W -f /home/vagrant/usuaris.ldif Verificació de l'estructura
Un cop carregades totes les dades, cal verificar que tot s’ha creat correctament amb “ldapsearch”:
Veure tot l’arbre de directoris:
ldapsearch -x -D “cn=admin,dc=equipo2,dc=es” -W -b “dc=equipo2,dc=es” “(objectClass=*)” dn
Veure tots els usuaris amb detalls:
ldapsearch -x -D “cn=admin,dc=equipo2,dc=es” -W -b “ou=usuaris,dc=equipo2,dc=es” “(objectClass=posixAccount)” uid cn mail homeDirectory
Veure tots els grups:
ldapsearch -x -D “cn=admin,dc=equipo2,dc=es” -W -b “ou=grups,dc=equipo2,dc=es” “(objectClass=posixGroup)”
Buscar un usuari concret:
ldapsearch -x -D “cn=admin,dc=equipo2,dc=es” -W -b “dc=equipo2,dc=es” “(uid=jfernandez)”
Resum i conclusions
Hem creat un directori LDAP completament funcional que simula l’estructura d’una empresa real amb 3 departaments, 3 grups posix i 6 usuaris amb tots els atributs necessaris.
Aspectes clau de la implementació:
S’han fet servir fitxers .ldif separats per a OUs, grups i usuaris, mantenint l’ordre correcte de càrrega.
Les contrasenyes s’han xifrat amb SSHA per garantir la seguretat.
Cada usuari té homeDirectory i loginShell correctes per poder iniciar sessió des de clients Linux.
L’estructura jeràrquica permet aplicar polítiques d’accés diferenciades per departament en el futur.
Aquesta estructura és la base per a les tasques posteriors de connexió de clients Linux i Windows al servidor LDAP.
Comprovació comandes
vagrant@debian:~$ ldapsearch -x -D "cn=admin,dc=equipo2,dc=es" -W \
-b "dc=equipo2,dc=es" \
"(objectClass=*)" dn
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=equipo2,dc=es> with scope subtree
# filter: (objectClass=*)
# requesting: dn
#
# equipo2.es
dn: dc=equipo2,dc=es
# usuaris, equipo2.es
dn: ou=usuaris,dc=equipo2,dc=es
# grups, equipo2.es
dn: ou=grups,dc=equipo2,dc=es
# administradors, grups, equipo2.es
dn: cn=administradors,ou=grups,dc=equipo2,dc=es
# comercials, grups, equipo2.es
dn: cn=comercials,ou=grups,dc=equipo2,dc=es
# rrhh, grups, equipo2.es
dn: cn=rrhh,ou=grups,dc=equipo2,dc=es
# major, grups, equipo2.es
dn: cn=major,ou=grups,dc=equipo2,dc=es
# clientes, grups, equipo2.es
dn: cn=clientes,ou=grups,dc=equipo2,dc=es
# marketing, grups, equipo2.es
dn: cn=marketing,ou=grups,dc=equipo2,dc=es
# major, usuaris, equipo2.es
dn: ou=major,ou=usuaris,dc=equipo2,dc=es
# clientes, usuaris, equipo2.es
dn: ou=clientes,ou=usuaris,dc=equipo2,dc=es
# marketing, usuaris, equipo2.es
dn: ou=marketing,ou=usuaris,dc=equipo2,dc=es
# jfernandez, major, usuaris, equipo2.es
dn: uid=jfernandez,ou=major,ou=usuaris,dc=equipo2,dc=es
# mruiz, major, usuaris, equipo2.es
dn: uid=mruiz,ou=major,ou=usuaris,dc=equipo2,dc=es
# ptorres, clientes, usuaris, equipo2.es
dn: uid=ptorres,ou=clientes,ou=usuaris,dc=equipo2,dc=es
# agomez, clientes, usuaris, equipo2.es
dn: uid=agomez,ou=clientes,ou=usuaris,dc=equipo2,dc=es
# lcastell, marketing, usuaris, equipo2.es
dn: uid=lcastell,ou=marketing,ou=usuaris,dc=equipo2,dc=es
# droig, marketing, usuaris, equipo2.es
dn: uid=droig,ou=marketing,ou=usuaris,dc=equipo2,dc=es
# search result
search: 2
result: 0 Success
# numResponses: 19
# numEntries: 18
vagrant@debian:~$ ldapsearch -x -D "cn=admin,dc=equipo2,dc=es" -W \
-b "ou=usuaris,dc=equipo2,dc=es" \
"(objectClass=posixAccount)" uid cn mail homeDirector
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <ou=usuaris,dc=equipo2,dc=es> with scope subtree
# filter: (objectClass=posixAccount)
# requesting: uid cn mail homeDirector
#
# jfernandez, major, usuaris, equipo2.es
dn: uid=jfernandez,ou=major,ou=usuaris,dc=equipo2,dc=es
uid: jfernandez
cn: Josep Fernandez
mail: jfernandez@equipo2.es
# mruiz, major, usuaris, equipo2.es
dn: uid=mruiz,ou=major,ou=usuaris,dc=equipo2,dc=es
uid: mruiz
cn: Marta Ruiz
mail: mruiz@equipo2.es
# ptorres, clientes, usuaris, equipo2.es
dn: uid=ptorres,ou=clientes,ou=usuaris,dc=equipo2,dc=es
uid: ptorres
cn: Paula Torres
mail: ptorres@equipo2.es
# agomez, clientes, usuaris, equipo2.es
dn: uid=agomez,ou=clientes,ou=usuaris,dc=equipo2,dc=es
uid: agomez
cn: Andreu Gomez
mail: agomez@equipo2.es
# lcastell, marketing, usuaris, equipo2.es
dn: uid=lcastell,ou=marketing,ou=usuaris,dc=equipo2,dc=es
uid: lcastell
cn: Laia Castell
mail: lcastell@equipo2.es
# droig, marketing, usuaris, equipo2.es
dn: uid=droig,ou=marketing,ou=usuaris,dc=equipo2,dc=es
uid: droig
cn: David Roig
mail: droig@equipo2.es
# search result
search: 2
result: 0 Success
# numResponses: 7
# numEntries: 6
vagrant@debian:~$ ldapsearch -x -D "cn=admin,dc=equipo2,dc=es" -W \
-b "dc=equipo2,dc=es" \
"(uid=jfernandez)"
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=equipo2,dc=es> with scope subtree
# filter: (uid=jfernandez)
# requesting: ALL
#
# jfernandez, major, usuaris, equipo2.es
dn: uid=jfernandez,ou=major,ou=usuaris,dc=equipo2,dc=es
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: jfernandez
cn: Josep Fernandez
sn: Fernandez
givenName: Josep
mail: jfernandez@equipo2.es
uidNumber: 1001
gidNumber: 5000
homeDirectory: /home/jfernandez
loginShell: /bin/bash
userPassword:: e1NTSEF9RUxfVEVVX0hBU0hfQVFVSQ==
description: Cap del departament Major
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
dif