Cicle formatiu: CFGM Sistemes Microinformàtics i Xarxes (SMX) / CFGS Administració de Sistemes Informàtics en Xarxa (ASIX)
Mòdul: 0224 – Sistemes operatius en xarxa / 0374 - Administració de sistemes operatius
Entorn: Ubuntu Server 26.04 LTS
LDAP (Lightweight Directory Access Protocol) és un protocol de xarxa que permet accedir i mantenir serveis de directori distribuïts. S’utilitza habitualment per centralitzar l’autenticació d’usuaris en entorns corporatius i educatius.
OpenLDAP és la implementació lliure i de codi obert més estesa del protocol LDAP, i és la que s’instal·la en aquest document.
| Rol | Hostname | IP | Sistema |
|---|---|---|---|
| Servidor LDAP | ldapserver |
192.168.1.10 |
Ubuntu Server 26.04 |
| Client LDAP | ldapclient |
192.168.1.20 |
Ubuntu Desktop 26.04 |
| Domini LDAP | dc=thos,dc=local |
— | — |
| Administrador | cn=admin,dc=thos,dc=local |
— | — |
Adapta les IP, el hostname i el domini al teu entorn real.
| Terme | Significat |
|---|---|
| DN (Distinguished Name) | Identificador únic d’una entrada al directori. Ex: cn=Joan,ou=Usuaris,dc=thos,dc=local |
| RDN (Relative Distinguished Name) | Part del DN que identifica l’entrada dins del seu contenidor. Ex: cn=Joan |
| DC (Domain Component) | Component del domini. Ex: dc=thos,dc=local |
| CN (Common Name) | Nom comú d’un objecte. Ex: cn=admin |
| OU (Organizational Unit) | Unitat organitzativa (contenidor). Ex: ou=Usuaris |
| UID (User ID) | Identificador d’usuari. Ex: uid=joan |
| DIT (Directory Information Tree) | Arbre jeràrquic que conté totes les entrades del directori |
| Schema | Defineix els tipus d’objectes i atributs permesos al directori |
| objectClass | Atribut que defineix el tipus d’entrada (persona, grup, unitat org.) |
dc=thos,dc=local ← Arrel (base DN)
├── cn=admin ← Administrador
├── ou=Usuaris ← Unitat organitzativa
│ ├── uid=joan
│ ├── uid=maria
│ └── uid=pere
├── ou=Grups ← Unitat organitzativa
│ ├── cn=professors
│ └── cn=alumnes
└── ou=Serveis ← Unitat organitzativa
└── cn=mailserverLDIF (LDAP Data Interchange Format) és el format de fitxer estàndard per importar i exportar entrades LDAP.
# Exemple d'entrada LDIF per a un usuari
dn: uid=joan,ou=Usuaris,dc=thos,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: joan
cn: Joan Garcia
sn: Garcia
givenName: Joan
mail: joan@thos.local
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/joan
loginShell: /bin/bash
userPassword: {SSHA}...Actualitza la llista de paquets:
sudo apt update Actualitza el sistema:
sudo apt upgradeConfigura el hostname:
sudo hostnamectl set-hostname ldapserverAfegeix l’entrada al fitxer /etc/hosts:
sudo nano /etc/hostsAfegeix aquesta línia:
192.168.1.10 ldapserver.thos.local ldapserver
Comprova:
hostname -fResposta esperada:
ldapserver.thos.localsudo apt install slapd ldap-utilsDurant la instal·lació, el sistema demanarà la contrasenya de l’administrador LDAP. Introdueix-la i confirma-la.
Recorda aquesta contrasenya; és la de cn=admin,dc=thos,dc=local.
Si necessites reconfigurar el servei (canviar domini, contrasenya, etc.):
sudo dpkg-reconfigure slapdEl procés farà les preguntes següents:
| Pregunta | Resposta recomanada |
|---|---|
| Ometre la configuració d’OpenLDAP? | No |
| Nom DNS del domini | thos.local |
| Nom de l’organització | thos (o el nom real) |
| Contrasenya de l’administrador | (la que triïs) |
| Motor de base de dades | MDB (recomanat) |
| Eliminar la base de dades en purgar slapd? | No |
| Moure la base de dades antiga? | Sí |
Comprova que el servei està actiu:
sudo systemctl status slapdResposta esperada:
● slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-07-06 15:53:54 UTC; 28s ago
Invocation: 57ac00e16e414f498cf382efec19c85f
Docs: man:slapd
man:slapd-config
man:slapd-mdb
Main PID: 17415 (slapd)
Tasks: 3 (limit: 1885)
Memory: 3M (peak: 3.4M)
CPU: 15ms
CGroup: /system.slice/slapd.service
└─17415 /usr/sbin/slapd -d0 -h "ldap:/// ldapi:///" -u openldap -g openldap
de jul. 06 15:53:54 ldapserver systemd[1]: Starting slapd.service - OpenLDAP Server Daemon...
de jul. 06 15:53:54 ldapserver slapd[17415]: @(#) $OpenLDAP: slapd 2.6.10+dfsg-1ubuntu5 (Nov 24 2025 11:17:55) $
Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
de jul. 06 15:53:54 ldapserver slapd[17415]: slapd starting
de jul. 06 15:53:54 ldapserver systemd[1]: Started slapd.service - OpenLDAP Server Daemon.Comprova que escolta al port 389:
sudo ss -tlnp | grep slapdResposta esperada:
LISTEN 0 2048 0.0.0.0:389 0.0.0.0:* users:(("slapd",pid=17415,fd=7))
LISTEN 0 2048 [::]:389 [::]:* users:(("slapd",pid=17415,fd=8)) Prova de connexió bàsica (sense autenticació):
ldapsearch -x -b "dc=thos,dc=local" -H ldap://localhostResposta esperada:
# extended LDIF
#
# LDAPv3
# base <dc=thos,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# thos.local
dn: dc=thos,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: thos.local
dc: thos
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1Prova amb autenticació d’administrador:
ldapsearch -x -D "cn=admin,dc=thos,dc=local" -W -b "dc=thos,dc=local"La resposta ha de mostrar l’entrada arrel del directori.
Resposta esperada:
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=thos,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# thos.local
dn: dc=thos,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: thos.local
dc: thos
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1OpenLDAP a Ubuntu 26.04 utilitza el sistema de configuració dinàmica
cn=config (OLC — On-Line Configuration), que
substitueix el fitxer slapd.conf tradicional.
Veure tota la configuració (requereix sudo):
sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config"Veure els paràmetres del servidor:
sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" "(objectClass=olcGlobal)"Veure la base de dades configurada:
sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" "(objectClass=olcDatabaseConfig)"Crea el fitxer log.ldif:
sudo nano log.ldifdn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
Aplica’l:
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f log.ldifNivells de log disponibles:
| Nivell | Valor | Descripció |
|---|---|---|
none |
0 | Sense log |
stats |
256 | Estadístiques de connexions (recomanat en producció) |
filter |
32 | Filtres de cerca |
acl |
128 | Comprovacions ACL |
any |
-1 | Tot (només per depurar) |
Configura rsyslog per separar els logs de LDAP:
sudo nano /etc/rsyslog.d/10-slapd.conflocal4.* /var/log/slapd.log
Reinicia syslog:
sudo systemctl restart rsyslogReinicia ldap:
sudo systemctl restart slapdsudo nano index.ldif# fitxer: index.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcDbIndex
olcDbIndex: objectClass eq
olcDbIndex: uid eq,pres,sub
olcDbIndex: cn eq,pres,sub
olcDbIndex: sn eq,pres,sub
olcDbIndex: mail eq,pres,sub
olcDbIndex: memberUid eq
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f index.ldifCrea el fitxer estructura.ldif:
sudo nano estructura.ldif# Unitat organitzativa: Usuaris
dn: ou=Usuaris,dc=thos,dc=local
objectClass: organizationalUnit
ou: Usuaris
description: Usuaris del sistema
# Unitat organitzativa: Grups
dn: ou=Grups,dc=thos,dc=local
objectClass: organizationalUnit
ou: Grups
description: Grups del sistema
Importa l’estructura:
ldapadd -x -D "cn=admin,dc=thos,dc=local" -W -f estructura.ldifResposta esperada:
Enter LDAP Password:
adding new entry "ou=Usuaris,dc=thos,dc=local"
adding new entry "ou=Grups,dc=thos,dc=local"Verifica:
ldapsearch -x -b "dc=thos,dc=local" -H ldap://localhost "(objectClass=organizationalUnit)"Resposta esperada:
# extended LDIF
#
# LDAPv3
# base <dc=thos,dc=local> with scope subtree
# filter: (objectClass=organizationalUnit)
# requesting: ALL
#
# Usuaris, thos.local
dn: ou=Usuaris,dc=thos,dc=local
objectClass: organizationalUnit
ou: Usuaris
description: Usuaris del sistema
# Grups, thos.local
dn: ou=Grups,dc=thos,dc=local
objectClass: organizationalUnit
ou: Grups
description: Grups del sistema
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2Primer, genera un hash de contrasenya:
slappasswd
# Introdueix la contrasenya i et retornarà el hash {SSHA}...Resposta esperada:
New password:
Re-enter new password:
{SSHA}TBIdrK2UoZVHk6h9bORCURCYz/3DccH2Crea el fitxer usuaris.ldif:
sudo nano usuaris.ldif# Usuari: Joan Garcia
dn: uid=joan,ou=Usuaris,dc=thos,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: joan
cn: Joan Garcia
sn: Garcia
givenName: Joan
displayName: Joan Garcia
mail: joan@thos.local
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/joan
loginShell: /bin/bash
userPassword: {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# Usuari: Maria Puig
dn: uid=maria,ou=Usuaris,dc=thos,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: maria
cn: Maria Puig
sn: Puig
givenName: Maria
displayName: Maria Puig
mail: maria@thos.local
uidNumber: 10002
gidNumber: 10001
homeDirectory: /home/maria
loginShell: /bin/bash
userPassword: {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Substitueix {SSHA}XXXXX... pel hash generat amb slappasswd.
ldapadd -x -D "cn=admin,dc=thos,dc=local" -W -f usuaris.ldifResposta esperada:
Enter LDAP Password:
adding new entry "uid=joan,ou=Usuaris,dc=thos,dc=local"
adding new entry "uid=maria,ou=Usuaris,dc=thos,dc=local"Crea el fitxer grups.ldif:
sudo nano grups.ldif# Grup: professors
dn: cn=professors,ou=Grups,dc=thos,dc=local
objectClass: posixGroup
cn: professors
gidNumber: 10001
memberUid: joan
memberUid: maria
# Grup: alumnes
dn: cn=alumnes,ou=Grups,dc=thos,dc=local
objectClass: posixGroup
cn: alumnes
gidNumber: 10002
ldapadd -x -D "cn=admin,dc=thos,dc=local" -W -f grups.ldifResposta esperada:
Enter LDAP Password:
adding new entry "cn=professors,ou=Grups,dc=thos,dc=local"
adding new entry "cn=alumnes,ou=Grups,dc=thos,dc=local"| Ordre | Funció |
|---|---|
ldapsearch |
Cerca entrades al directori |
ldapadd |
Afegeix entrades noves |
ldapmodify |
Modifica entrades existents |
ldapdelete |
Elimina entrades |
ldappasswd |
Canvia contrasenyes |
slappasswd |
Genera hash de contrasenya |
Cerca tots els usuaris
ldapsearch -x -b "ou=Usuaris,dc=thos,dc=local" "(objectClass=posixAccount)"Cerca un usuari per uid
ldapsearch -x -b "dc=thos,dc=local" "(uid=joan)"Cerca per nom parcial (comodí)
ldapsearch -x -b "dc=thos,dc=local" "(cn=Joan*)"Mostra només atributs específics
ldapsearch -x -b "dc=thos,dc=local" "(objectClass=posixAccount)" uid cn mailCerca tots els membres d’un grup
ldapsearch -x -b "ou=Grups,dc=thos,dc=local" "(cn=professors)" memberUidAutenticació amb l’usuari administrador
ldapsearch -x -D "cn=admin,dc=thos,dc=local" -W -b "dc=thos,dc=local"Per modificar atributs, crea un fitxer LDIF amb el tipus de canvi:
sudo nano canvis.ldif# Canvia el correu d'un usuari (replace)
dn: uid=joan,ou=Usuaris,dc=thos,dc=local
changetype: modify
replace: mail
mail: joan.garcia@thos.local
# Afegeix un atribut nou (add)
dn: uid=joan,ou=Usuaris,dc=thos,dc=local
changetype: modify
add: telephoneNumber
telephoneNumber: +34 93 000 0001
# Elimina un atribut (delete)
dn: uid=joan,ou=Usuaris,dc=thos,dc=local
changetype: modify
delete: telephoneNumber
ldapmodify -x -D "cn=admin,dc=thos,dc=local" -W -f canvis.ldifResposta esperada:
Enter LDAP Password:
modifying entry "uid=joan,ou=Usuaris,dc=thos,dc=local"
modifying entry "uid=joan,ou=Usuaris,dc=thos,dc=local"
modifying entry "uid=joan,ou=Usuaris,dc=thos,dc=local"Canvia la contrasenya d’un usuari (com a administrador)
ldappasswd -x -D "cn=admin,dc=thos,dc=local" -W -s novacontrasenya \
"uid=joan,ou=Usuaris,dc=thos,dc=local"L’usuari canvia la seva pròpia contrasenya
ldappasswd -x -D "uid=joan,ou=Usuaris,dc=thos,dc=local" -W -s novacontrasenyaElimina un usuari
ldapdelete -x -D "cn=admin,dc=thos,dc=local" -W \
"uid=joan,ou=Usuaris,dc=thos,dc=local"Elimina una OU (ha d’estar buida)
ldapdelete -x -D "cn=admin,dc=thos,dc=local" -W \
"ou=Temporal,dc=thos,dc=local"Exporta tot el directori a LDIF
sudo slapcat -v -l backup_ldap.ldifImporta (amb slapd aturat)
Atura
sudo systemctl stop slapdImporta
sudo slapadd -v -l backup_ldap.ldifEngega
sudo systemctl start slapdConfigura el client LDAP (192.168.1.20)
perquè els usuaris LDAP puguin iniciar sessió al sistema.
/etc/hostsEdita el fitxer /etc/hosts. Afegeix el servidor
LDAP:
sudo nano /etc/hosts192.168.1.10 ldapserver.thos.local ldapserver
Comprova connectivitat i que el servidor respon:
ldapsearch -x -H ldap://ldapserver.thos.local -b "dc=thos,dc=local" -s baseResposta esperada:
# extended LDIF
#
# LDAPv3
# base <dc=thos,dc=local> with scope baseObject
# filter: (objectclass=*)
# requesting: ALL
#
# thos.local
dn: dc=thos,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: thos.local
dc: thos
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
ramon@client:~$ /etc/sssd/sssd.confsudo nano /etc/sssd/sssd.confContingut bàsic:
[sssd]
services = nss, pam
domains = thos.local
[domain/thos.local]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldap://ldapserver.thos.local
ldap_search_base = dc=thos,dc=local
ldap_id_use_start_tls = false
ldap_auth_disable_tls_never_use_in_production = true
lookup_family_order = ipv4_first
Canvia el propietari
sudo chown root:root /etc/sssd/sssd.confCanvia els permisos (SSSD es nega a arrencar si no són correctes):
sudo chmod 600 /etc/sssd/sssd.confActiva la creació automàtica del home directory
sudo pam-auth-update --enable mkhomedirAixò afegeix pam_mkhomedir.so a la pila PAM perquè es
creï /home/usuari automàticament al primer login si
l’usuari existeix a LDAP però no localment.
Reinicia SSSD
sudo systemctl restart sssdHabilita SSSD en l’inici
sudo systemctl enable sssdProva que funciona
getent passwd joanResposta esperada:
joan:*:10001:10001:Joan Garcia:/home/joan:/bin/bashid joanResposta esperada:
uid=10001(joan) gid=10001(professors) groups=10001(professors)Si retorna informació de l’usuari LDAP, NSS ja el troba. Per provar l’autenticació completa:
su - joanResposta esperada:
Contrasenya:
Creant el directori '/home/joan'.
joan@client:~$
Per defecte, LDAP transmet les dades en text pla. És imprescindible activar TLS en entorns de producció.
Crea el directori per als certificats
sudo mkdir -p /etc/ldap/certsMou-te al directori creat
cd /etc/ldap/certsGenera la clau privada i el certificat de la CA
sudo openssl req -new -x509 -nodes -out ca.crt -keyout ca.key -days 3650 \
-subj "/C=ES/ST=Catalunya/L=Mataro/O=THOS/CN=CA-LDAP"Genera la clau del servidor
sudo openssl genrsa -out ldapserver.key 4096Genera la petició de certificat (CSR)
sudo openssl req -new -key ldapserver.key -out ldapserver.csr \
-subj "/C=ES/ST=Catalunya/L=Mataro/O=THOS/CN=ldapserver.thos.local"Signa el certificat amb la CA
sudo openssl x509 -req -in ldapserver.csr -CA ca.crt -CAkey ca.key \
-CAcreateserial -out ldapserver.crt -days 3650Canvia el propietari
sudo chown openldap:openldap /etc/ldap/certs/*.keyAjusta permisos
sudo chmod 640 /etc/ldap/certs/*.keyTorna al teu home
cdCrea el fitxer tls.ldif:
sudo nano tls.ldifdn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ldap/certs/ca.crt
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/certs/ldapserver.crt
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/certs/ldapserver.key
-
add: olcTLSVerifyClient
olcTLSVerifyClient: never
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f tls.ldifResposta esperada:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"Edita la configuració del servei:
sudo nano -l /etc/default/slapdModifica la variable SLAPD_SERVICES (línia 24):
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
sudo systemctl restart slapdVerifica que escolta al port 636
sudo ss -tlnp | grep slapdResposta esperada:
LISTEN 0 2048 0.0.0.0:636 0.0.0.0:* users:(("slapd",pid=3356,fd=10))
LISTEN 0 2048 0.0.0.0:389 0.0.0.0:* users:(("slapd",pid=3356,fd=7))
LISTEN 0 2048 [::]:636 [::]:* users:(("slapd",pid=3356,fd=11))
LISTEN 0 2048 [::]:389 [::]:* users:(("slapd",pid=3356,fd=8)) Configura el client LDAP (192.168.1.20)
perquè els usuaris LDAP puguin iniciar sessió al sistema.
/etc/hostsEdita el fitxer /etc/hosts. Afegeix el servidor
LDAP:
sudo nano /etc/hosts192.168.1.10 ldapserver.thos.local ldapserver
Comprova connectivitat i que el servidor respon:
ldapsearch -x -H ldap://ldapserver.thos.local -b "dc=thos,dc=local" -s baseResposta esperada:
# extended LDIF
#
# LDAPv3
# base <dc=thos,dc=local> with scope baseObject
# filter: (objectclass=*)
# requesting: ALL
#
# thos.local
dn: dc=thos,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: thos.local
dc: thos
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
ramon@client:~$ Crea una carpeta per al certificat
sudo mkdir -p /etc/ssl/certs/thos-caCopia el certificat de la CA al client:
sudo scp ramon@ldapserver:/etc/ldap/certs/ca.crt /etc/ssl/certs/thos-ca/ca.crtProva la negociació TLS
openssl s_client -connect ldapserver:389 -starttls ldap -CAfile /etc/ssl/certs/thos-ca/ca.crtopenssl s_client -connect ldapserver:636 -CAfile /etc/ssl/certs/thos-ca/ca.crt/etc/sssd/sssd.conf per fer servir TLSsudo nano /etc/sssd/sssd.conf [sssd]
services = nss, pam
domains = thos.local
[domain/thos.local]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldap://ldapserver.thos.local
ldap_search_base = dc=thos,dc=local
ldap_id_use_start_tls = true
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/ssl/certs/thos-ca/ca.crt
lookup_family_order = ipv4_first
Canvia el propietari
sudo chown root:root /etc/sssd/sssd.confCanvia els permisos (SSSD es nega a arrencar si no són correctes):
sudo chmod 600 /etc/sssd/sssd.confActiva la creació automàtica del home directory
sudo pam-auth-update --enable mkhomedirAixò afegeix pam_mkhomedir.so a la pila PAM perquè es
creï /home/usuari automàticament al primer login si
l’usuari existeix a LDAP però no localment. Reinicia el servei:
sudo systemctl restart sssdHabilita SSSD en l’inici
sudo systemctl enable sssdProva que funciona
getent passwd joanResposta esperada:
joan:*:10001:10001:Joan Garcia:/home/joan:/bin/bashid joanResposta esperada:
uid=10001(joan) gid=10001(professors) groups=10001(professors)Si retorna informació de l’usuari LDAP, NSS ja el troba. Per provar l’autenticació completa:
su - joanResposta esperada:
Contrasenya:
joan@client:~$ Apache Directory Studio és una eina gràfica (GUI) per gestionar servidors LDAP, basada en Eclipse RCP. S’instal·la en una màquina de la xarxa amb GUI, no al servidor.
ldapsearch per terminal.ldapsearch però amb interfície visual i historial de
cerques.ldapserver.thos.local i potser altres entorns de
prova).Descàrrega des de https://directory.apache.org/studio/ la versió per a Linux (tar.gz)
wget -c https://dlcdn.apache.org/directory/studio/2.0.0.v20210717-M17/ApacheDirectoryStudio-2.0.0.v20210717-M17-linux.gtk.x86_64.tar.gzDescomprimeix
tar -zxvf ApacheDirectoryStudio-2.0.0.v20210717-M17-linux.gtk.x86_64.tar.gzSi no tens un entorn d’execució Java (JRE) instal·la:
sudo apt install default-jreExecuta
ApacheDirectoryStudio/ApacheDirectoryStudioCrea una nova connexió:
ldapserver.thos.local o 192.168.1.10389 (o 636 per
LDAPS)cn=admin,dc=thos,dc=localdc=thos,dc=local
phpLDAPadmin és una eina web (PHP) per administrar servidors LDAP des del navegador, a diferència d’Apache Directory Studio que és una aplicació d’escriptori. S’instal·la al servidor.
| phpLDAPadmin | Apache Directory Studio | |
|---|---|---|
| Tipus | Aplicació web (Apache+PHP) | Aplicació d’escriptori (Java) |
| Accés | Des de qualsevol navegador de la xarxa | Cal instal·lar-lo a cada màquina client |
| Manteniment | Projecte pràcticament abandonat des de fa anys | Actiu i mantingut per Apache |
| TLS/SSL | Suport limitat i configuració sovint problemàtica | Gestió de certificats més robusta |
phpLDAPadmin fa anys que no rep actualitzacions actives (l’última versió estable és de 2015-2016, tot i que hi ha forks comunitaris com ldapadmin o phpLDAPadmin mantingut per algunes distribucions).
sudo apt install phpldapadminConfigura la connexió
sudo nano -l /etc/phpldapadmin/config.phpModifica les línies 324, 331 i 358:
$servers->setValue('server','host','192.168.1.10');
$servers->setValue('server','base',array('dc=thos,dc=local'));
$servers->setValue('login','bind_id','cn=admin,dc=thos,dc=local');Accedeix des del navegador: http://192.168.1.10/phpldapadmin
LDAP Account Manager és una interfície web avançada
per administrar comptes d’usuari, grups i altres objectes LDAP, pensada
com a alternativa moderna i mantinguda a phpLDAPadmin. Destaca per la
seva integració amb esquemes estàndard (posixAccount, inetOrgPerson, Samba, etc.) i per oferir funcions de gestió
massiva d’usuaris. S’instal·la al servidor.
| LAM | phpLDAPadmin | |
|---|---|---|
| Manteniment | Actiu (última release el 2025) | Abandonat des de ~2015 |
| TLS/SSL modern | Suport complet TLS 1.2/1.3 | Sovint problemàtic |
| Enfocament | Orientat a tasques (crear usuari, grup…) | Edició genèrica d’atributs bruts |
| PHP modern | Compatible amb PHP 8.x | Pot requerir pedaços per PHP recent |
sudo apt install ldap-account-managerFins a la versió d’Ubuntu 24.04, això instal·la LAM i configura
automàticament Apache per servir-lo a /lam, però a la
versió 26.04 d’Ubuntu s’ha endurit el sandboxing.
Has de donar permisos d’escriptura a dos directoris:
sudo systemctl edit apache2[Service]
ReadWritePaths=/etc/ldap-account-manager /var/lib/ldap-account-manager
Rellegeix els unit files
(.service, .socket, .timer,
etc.)
sudo systemctl daemon-reloadReinicia Apache
sudo systemctl restart apache2Configuració inicial
Accedeix a la interfície de configuració:
http://ldapserver.thos.local/lamLa contrasenya de configuració per defecte és
lam. Canvia-la immediatament a LAM
configuration → General settings → Master password.
Ves a LAM configuration → Edit server profiles i configura:
| Paràmetre | Valor |
|---|---|
| Server address | ldap://192.168.1.10:389 |
| Tree suffix | dc=thos,dc=local |
| List of valid users | cn=admin,dc=thos,dc=local |
| Login method | Fixed list |
A la pestanya Account types, defineix on es guarden els usuaris i grups:
| Tipus | Suffix LDAP |
|---|---|
| Users | ou=Usuaris,dc=thos,dc=local |
| Groups | ou=Grups,dc=thos,dc=local |
Desa el perfil i accedeix al panell principal:
http://192.168.1.10/lam
Per connectar via LDAPS, edita el perfil i canvia l’adreça del servidor:
ldaps://192.168.1.10:636
Si el certificat és autosignat, cal afegir la CA al sistema:
sudo cp /etc/ldap/certs/ca.crt /usr/local/share/ca-certificates/ldap-ca.crt
sudo update-ca-certificates
sudo systemctl restart apache2sudo apt install ldapscripts
sudo nano /etc/ldapscripts/ldapscripts.confParàmetres clau:
SERVER="ldap://localhost"
BINDDN="cn=admin,dc=thos,dc=local"
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
SUFFIX="dc=thos,dc=local"
USUFFIX="ou=Usuaris"
GSUFFIX="ou=Grups"
UIDSTART=10000
GIDSTART=10000# Desa la contrasenya de l'administrador
echo -n "contrasenya_admin" | sudo tee /etc/ldapscripts/ldapscripts.passwd
sudo chmod 400 /etc/ldapscripts/ldapscripts.passwd
# Afegir usuari
sudo ldapadduser pere professors
# Eliminar usuari
sudo ldapdeleteuser pere
# Afegir grup
sudo ldapaddgroup devops
# Afegir usuari a grup
sudo ldapaddusertogroup joan devops# Estat del servei
sudo systemctl status slapd
# Logs en temps real
sudo journalctl -u slapd -f
# Logs de rsyslog (si configurat)
sudo tail -f /var/log/slapd.log
# Comprovar la sintaxi de la configuració
sudo slaptest -v
# Comprovar la integritat de la base de dades
sudo slapd -T test -f /etc/ldap/slapd.confError: Can't contact LDAP server
# Comprova que slapd està en marxa
sudo systemctl start slapd
# Comprova el port
sudo ss -tlnp | grep 389
# Comprova el tallafoc
sudo ufw status
sudo ufw allow 389/tcp
sudo ufw allow 636/tcpError: Invalid credentials (49)
# El DN o la contrasenya són incorrectes. Verifica:
ldapwhoami -x -D "cn=admin,dc=thos,dc=local" -W
# Reseteja la contrasenya de l'admin
sudo ldappasswd -Y EXTERNAL -H ldapi:/// \
-s nova_contrasenya \
"cn=admin,dc=thos,dc=local"Error: No such object (32) en
cercar
# La base de cerca no existeix. Verifica la base DN:
sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" \
"(olcSuffix=*)" olcSuffixError: TLS: can't connect
# Comprova els certificats
openssl verify -CAfile /etc/ldap/certs/ca.crt /etc/ldap/certs/ldapserver.crt
# Comprova la data de caducitat
openssl x509 -in /etc/ldap/certs/ldapserver.crt -noout -dates
# Desactiva temporalment la verificació TLS per depurar
LDAPTLS_REQCERT=never ldapsearch -x -ZZ -b "dc=thos,dc=local" \
-H ldap://ldapserver.thos.localProblema: usuaris LDAP no apareixen amb getent passwd
# Comprova nsswitch.conf
grep passwd /etc/nsswitch.conf
# Comprova la connexió des del client
ldapsearch -x -b "ou=Usuaris,dc=thos,dc=local" -H ldap://192.168.1.10
# Reinicia nscd
sudo systemctl restart nscd
# Neteja la caché de nscd
sudo nscd -i passwd
sudo nscd -i group# Activar log detallat temporalment
sudo ldapmodify -Y EXTERNAL -H ldapi:/// << EOF
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: -1
EOF
# Tornar al nivell normal quan hagis acabat
sudo ldapmodify -Y EXTERNAL -H ldapi:/// << EOF
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
EOF| Port | Protocol | Servei | Descripció |
|---|---|---|---|
| 389 | TCP | LDAP | Connexió LDAP estàndard (text pla o STARTTLS) |
| 636 | TCP | LDAPS | LDAP sobre SSL/TLS |
| 3268 | TCP | GC | Global Catalog (Active Directory) |
| 3269 | TCP | GC over SSL | Global Catalog sobre SSL |
# Iniciar / aturar / reiniciar / comprovar l'estat
sudo systemctl start|stop|restart|status slapd
# Cercar tots els objectes
ldapsearch -x -b "dc=thos,dc=local" -H ldap://localhost
# Afegir entrades des de fitxer LDIF
ldapadd -x -D "cn=admin,dc=thos,dc=local" -W -f fitxer.ldif
# Modificar entrades des de fitxer LDIF
ldapmodify -x -D "cn=admin,dc=thos,dc=local" -W -f canvis.ldif
# Eliminar una entrada
ldapdelete -x -D "cn=admin,dc=thos,dc=local" -W "uid=joan,ou=Usuaris,dc=thos,dc=local"
# Exportar el directori complet
sudo slapcat -v -l backup.ldif
# Importar (slapd ha d'estar aturat)
sudo systemctl stop slapd
sudo slapadd -v -l backup.ldif
sudo systemctl start slapd