Cicle formatiu: Sistemes Microinformàtics i Xarxes
(SMX)
Mòdul: 0224 — Sistemes operatius en xarxa
Sistema operatiu: Ubuntu Server 26.04 LTS
Samba logo
Samba és una
implementació de codi obert del protocol SMB/CIFS
que permet la interoperabilitat entre sistemes Linux/Unix i Windows. Des
de la versió 4.0, Samba incorpora la funcionalitat de
Active
Directory Domain Controller (AD-DC), que permet desplegar
un controlador de domini plenament compatible amb l’ecosistema Microsoft
Active Directory.
1. Què és Active Directory?
Active Directory (AD) és un servei de directori
desenvolupat per Microsoft que proporciona:
Autenticació centralitzada mitjançant Kerberos i
NTLM.
Autorització basada en polítiques i grups.
Directori LDAP per emmagatzemar informació
d’usuaris, grups i equips.
DNS integrat per a la resolució de noms del
domini.
Directives de grup (GPO) per gestionar la
configuració dels clients.
1.1. Per què Samba AD-DC?
Característica
Samba AD-DC
Windows Server AD
Llicència
Lliure (GPLv3)
Propietari
Cost
Gratuït
Llicència de pagament
Compatibilitat
Alta (AD-compatible)
Nativa
Rendiment
Excel·lent
Excel·lent
Gestió
Línia d’ordres / RSAT
GUI / PowerShell
Suport GPO complet
Parcial
Complet
💡
Nota
Samba AD-DC és àmpliament utilitzat en entorns educatius i
empresarials que volen aprofitar la infraestructura Active Directory
sense el cost de les llicències Microsoft.
Samba
4.x (disponible als dipòsits oficials d’Ubuntu)
Accés root o sudo
3.3. Informació
del domini (exemple d’aquest document)
Paràmetre
Valor d’exemple
Nom del domini (REALM)
thos.local
Nom NetBIOS
THOS
FQDN del servidor
dc1.thos.local
IP del servidor
10.0.2.10
Màscara de xarxa
255.255.255.0
Passward administrador
P@ssw0rd123 (canviar!)
⚠️
Avís
Substituïu els valors d’exemple pels del vostre entorn real. El
domini .local pot causar conflictes amb mDNS
(Multicast DNS); en producció es recomana usar un subdomini real com ad.empresa.com.
4. Preparació del servidor
4.1. Configuració de la IP
estàtica
Samba AD-DC requereix una adreça IP estàtica. Editeu la configuració
de Netplan:
sudo nano /etc/netplan/00-installer-config.yaml
network:
ethernets:
enp0s3:
addresses:
- 10.0.2.10/24
match:
macaddress: 08:00:27:40:ef:70
nameservers:
addresses:
- 127.0.0.1 # El mateix servidor (DNS intern)
- 8.8.8.8 # DNS extern com a reserva
search:
- thos.local
routes:
- to: default
via: 10.0.2.1
set-name: enp0s3
version: 2
Aplica la nova configuració:
sudo netplan apply
4.2. Configuració del
nom d’amfitrió (hostname)
Estableix el nom curt:
sudo hostnamectl set-hostname dc1
Verifica:
hostname
Edita /etc/hosts per afegir l’FQDN:
sudo nano /etc/hosts
127.0.0.1 localhost
10.0.2.10 dc1.thos.local dc1
📌
Important
Elimineu o comenteu qualsevol línia 127.0.1.1 que apunti
al nom d’amfitrió, ja que pot causar problemes amb Kerberos.
Verifica la resolució:
hostname-f# Ha de retornar: dc1.thos.localping-c 2 dc1.thos.local
4.3. Sincronització horària
Kerberos requereix que l’hora del servidor i els clients estigui
sincronitzada (tolerància màxima de 5 minuts):
Local time: dj. 2026-06-23 09:31:07 CEST Universal time: dj. 2026-06-23 07:31:07 UTC RTC time: dj. 2026-06-23 07:31:07 Time zone: Europe/Madrid (CEST, +0200)System clock synchronized: yes NTP service: active RTC in local TZ: no
Edita chrony per permetre la sincronització amb les màquines de la
xarxa local:
Durant la instal·lació, el sistema demanarà el realm de Kerberos.
Respostes:
THOS.LOCAL
dc1.thos.local
dc1.thos.local
5.3. Atura i
desactiva els serveis per defecte
Abans d’aprovisionar el domini, cal aturar els serveis de Samba per
defecte:
sudo systemctl stop smbd nmbd winbind
I deshabilitar-los:
sudo systemctl disable smbd nmbd winbind
Prepara el servidor per funcionar com a Active Directory
Domain Controller amb Samba, desactivant els serveis que no cal
en aquest mode. Emmascara (bloqueja) els tres serveis del mode Samba
clàssic (servidor de fitxers/impressió):
smbd — servidor SMB (compartició de fitxers)
nmbd — resolució de noms NetBIOS
winbind — integració amb dominis Windows
mask és més fort que disable: crea un
symlink a /dev/null de manera que no es poden
iniciar ni manualment ni com a dependència d’un altre servei.
Evita conflictes amb samba-ad-dc.
sudo systemctl mask smbd nmbd winbind
5.4. Activa samba-ad-dc
Elimina l’emmascarament de samba-ad-dc. Aquest servei ve
emmascarant per defecte perquè no s’iniciï accidentalment abans de fer
la provisió del domini.
sudo systemctl unmask samba-ad-dc
Activa samba-ad-dc perquè s’iniciï automàticament en
cada arrencada del sistema.
sudo systemctl enable samba-ad-dc
6. Aprovisionament del domini
L’aprovisionament crea tota l’estructura del domini AD (base de dades
LDAP, zona DNS, configuració de Kerberos, SYSVOL…). Podeu consultar tots
els paràmetres disponibles a la documentació
de samba-tool domain provision.
6.1. Fes
còpia de seguretat de la configuració existent
THOS.LOCAL
THOS
dc
SAMBA_INTERNAL
8.8.8.8
P@ssw0rd123
P@ssw0rd123
Significat de les opcions:
Opció
Descripció
--use-rfc2307
Afegeix atributs POSIX l’esquema (RFC 2307: UID, GID,
shell…) per a clients Linux
Realm
Nom complet del domini Kerberos (en majúscules)
Domain
Nom NetBIOS del domini (màx. 15 caràcters, majúscules)
Server Role
Configura el servidor com a controlador de domini
DNS backend
Usa el DNS intern de Samba (opció recomanada)
DNS forwarder IP address
Aquesta configuració només està disponible quan s’utilitza el
backend DNS SAMBA_INTERNAL. El servidor DNS intern només pot resoldre
les zones DNS de l’Active Directory (AD). Per habilitar consultes
recursives d’altres zones, definiu el paràmetre dns forwarder del fitxer smb.conf a una o més
adreces IP de servidors DNS que admetin la resolució recursiva.
Administrator password
Contrasenya de l’administrador del domini
La sortida esperada és similar a:
Realm [THOS.LOCAL]: Domain [THOS]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.53]: 8.8.8.8Administrator password: Retype password: ...Setting up sam.ldb partitions and settings: doneSetting up sam.ldb rootDSE: donePre-loading the Samba 4 and AD schema: doneA Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.confSetting up share.ldb: doneSetting up secrets.ldb: doneSetting up the registry: doneSetting up the privileges database: doneSetting up idmap db: doneSetting up SAM Database: doneSetting up sam.ldb partitions and settings: done...Once the above files are installed, your Samba4 installation will be ready to use.Server Role: active directory domain controllerHostname: dc1NetBIOS Domain: THOSDNS Domain: thos.localDOMAIN SID: S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX
6.3.
Desactiva el resolver de systemd (per conflicte de ports DNS)
L’aprovisionament ha creat /etc/samba/smb.conf.
Reviseu-lo:
cat /etc/samba/smb.conf
El contingut típic és:
# Global parameters[global] dns forwarder = 8.8.8.8 netbios name = DC1 realm = THOS.LOCAL server role = active directory domain controller workgroup = THOS idmap_ldb:use rfc2307 =yes[sysvol] path = /var/lib/samba/sysvol read only =No[netlogon] path = /var/lib/samba/sysvol/thos.local/scripts read only =No
Si tens més d’una interfície de xarxa edita el fitxer /etc/samba/smb.conf
sudo nano /etc/samba/smb.conf
Afegeix a l’apartat [global] aquestes
línies:
interfaces = lo enp0s3 # enp0s3 és el nom de la interfície de xarxa
bind interfaces only = yes
Domain and forest function level for domain 'DC=thos,DC=local'Forest function level: (Windows) 2008 R2Domain function level: (Windows) 2008 R2Lowest function level of a DC: (Windows) 2008 R2
8.2. Verifica DNS
Pregunta al servidor DNS de 127.0.0.1 quina IP té dc1.thos.local:
host-t A dc1.thos.local 127.0.0.1
Sortida esperada:
Using domain server:Name: 127.0.0.1Address: 127.0.0.1#53Aliases: dc1.thos.local has address 10.0.2.10
Pregunta si el servei Kerberos del domini thos.local
està al servidor dc1.thos.local:
host-t SRV _kerberos._tcp.thos.local 127.0.0.1
Sortida esperada:
Using domain server:Name: 127.0.0.1Address: 127.0.0.1#53Aliases: _kerberos._tcp.thos.local has SRV record 0 100 88 dc1.thos.local.
Pregunta si el servei LDAP del domini thos.local està al
servidor dc1.thos.local:
host-t SRV _ldap._tcp.thos.local 127.0.0.1
Sortida esperada:
Using domain server:Name: 127.0.0.1Address: 127.0.0.1#53Aliases: _ldap._tcp.thos.local has SRV record 0 100 389 dc1.thos.local.
8.3. Verifica Kerberos
Obté un tiquet Kerberos per a l’administrador
kinit administrator
Sortida esperada:
Password for administrator@THOS.LOCAL: Warning: Your password will expire in 41 days on dimecres, 5 d’agost de 2026, 08:04:06
Verifica el tiquet:
klist
Sortida esperada:
Ticket cache: FILE:/tmp/krb5cc_1000Default principal: administrator@THOS.LOCALValid starting Expires Service principal24/6/26 08:32:45 24/6/26 18:32:45 krbtgt/THOS.LOCAL@THOS.LOCAL renew until 25/6/26 08:32:38
# record 1dn: DC=thos,DC=local# Referralref: ldap://thos.local/CN=Configuration,DC=thos,DC=local# Referralref: ldap://thos.local/DC=DomainDnsZones,DC=thos,DC=local# Referralref: ldap://thos.local/DC=ForestDnsZones,DC=thos,DC=local# returned 4 records# 1 entries# 3 referrals
8.5. Verifica SMB
Llista les comparticions disponibles
smbclient-L localhost -U%
Sortida esperada:
Sharename Type Comment --------- ---- ------- sysvol Disk netlogon Disk IPC$ IPC IPC Service (Samba 4.23.6-Ubuntu-4.23.6+dfsg-1ubuntu2.1)SMB1 disabled -- no workgroup available
Try "help" to get a list of possible commands.smb: \> l . D 0 Wed Jun 24 08:04:06 2026 .. D 0 Wed Jun 24 08:04:06 2026 thos.local D 0 Wed Jun 24 08:04:05 2026 11758760 blocks of size 1024. 5895228 blocks availablesmb: \> q
9. Gestió d’usuaris i grups
9.1. Ordres bàsiques de samba-tool
Usuaris
# Crear un usuarisudo samba-tool user create nom.cognom \--given-name="Nom"\--surname="Cognom"\--mail-address="nom.cognom@thos.local"\'P@ssw0rdUsuari'# Llistar usuarissudo samba-tool user list# Mostrar informació d'un usuarisudo samba-tool user show nom.cognom# Canviar la contrasenya d'un usuarisudo samba-tool user setpassword nom.cognom# Desactivar un usuarisudo samba-tool user disable nom.cognom# Activar un usuarisudo samba-tool user enable nom.cognom# Eliminar un usuarisudo samba-tool user delete nom.cognom
Grups
# Crear un grupsudo samba-tool group add "Professors"sudo samba-tool group add "Alumnes"sudo samba-tool group add "Administradors TI"# Afegir un membre a un grupsudo samba-tool group addmembers "Professors" nom.cognom# Llistar membres d'un grupsudo samba-tool group listmembers "Professors"# Llistar tots els grupssudo samba-tool group list# Eliminar un membre d'un grupsudo samba-tool group removemembers "Professors" nom.cognom
Unitats Organitzatives (OU)
# Crear OUsudo samba-tool ou create "OU=Departaments,DC=thos,DC=local"sudo samba-tool ou create "OU=ASIX,OU=Departaments,DC=thos,DC=local"sudo samba-tool ou create "OU=SMX,OU=Departaments,DC=thos,DC=local"# Llistar OUsudo samba-tool ou list
9.2. Exemple: Creació
d’estructura departamental
# Crear estructura d'OUsudo samba-tool ou create "OU=Centres,DC=thos,DC=local"sudo samba-tool ou create "OU=Professors,OU=Centres,DC=thos,DC=local"sudo samba-tool ou create "OU=Alumnes,OU=Centres,DC=thos,DC=local"sudo samba-tool ou create "OU=Equips,OU=Centres,DC=thos,DC=local"# Crear grupssudo samba-tool group add "GRP_Professors"\--groupou="OU=Professors,OU=Centres,DC=thos,DC=local"sudo samba-tool group add "GRP_ASIX"\--groupou="OU=Alumnes,OU=Centres,DC=thos,DC=local"sudo samba-tool group add "GRP_SMX"\--groupou="OU=Alumnes,OU=Centres,DC=thos,DC=local"# Crear usuaris d'exemplesudo samba-tool user create prof.lopez 'P@ssw0rd'\--given-name="Ramon"\--surname="López"\--userou="OU=Professors,OU=Centres,DC=thos,DC=local"sudo samba-tool user create alu.garcia 'P@ssw0rd'\--given-name="Joan"\--surname="Garcia"\--userou="OU=Alumnes,OU=Centres,DC=thos,DC=local"# Assignar usuaris als grupssudo samba-tool group addmembers "GRP_Professors" prof.lopezsudo samba-tool group addmembers "GRP_ASIX" alu.garcia
# PowerShell (Windows 10/11) - com a AdministradorAdd-WindowsCapability -Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"-OnlineAdd-WindowsCapability -Name "Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0"-OnlineAdd-WindowsCapability -Name "Rsat.DNS.Tools~~~~0.0.1.0"-Online
Un cop instal·lades, accediu a:
Usuaris i equips d’Active Directory
(dsa.msc)
Llocs i serveis d’Active Directory
(dssite.msc)
DNS (dnsmgmt.msc)
Administrador de directives de grup
(gpmc.msc)
10. Unió de clients Windows
al domini
10.1. Prerequisits del client
Windows
Abans d’unir un client Windows al domini:
IP del DNS: configureu el client perquè usi 10.0.2.10 com a servidor DNS primari.
Connectivitat: verifiqueu que el client pot fer
ping al DC (ping dc1.thos.local).
Hora sincronitzada: assegureu-vos que l’hora del
client està sincronitzada amb el servidor. Per fer-ho cal anar a:
Tauler de control → Rellotge i regió →
Data i hora → Hora d’Internet
Sincronització de l’hora
10.2. Unió al domini (GUI)
Obriu Propietats del sistema → Nom de
l’equip → Canviar.
Seleccioneu Domini i introduïu thos.local.
Introduïu les credencials de l’administrador del domini.
Reinicieu el sistema.
Domini thos.localCredencials de
l’administradorVerificació que s’ha afegit al
domini
Des del DC, verifica que l’equip apareix al domini:
sudo samba-tool computer list
Resposta esperada:
DC1$CLIENT2$
11. Unió de clients Linux al
domini
11.1. Configuracions prèvies
Modifica el hostname:
sudo hostnamectl set-hostname client1
Edita el fitxer hosts:
sudo nano /etc/hosts
127.0.1.1 client1.thos.local client1
Abans d’unir un client GNU/Linux al domini cal:
Configurar el client perquè usi 10.0.2.10 com a
servidor DNS primari.
Verificar que el client pot fer ping al DC
(ping dc1.thos.local).
Consulta el nom de la connexió:
nmcli con show
Sortida:
NAME UUID TYPE DEVICE netplan-enp0s3 1eef7e45-3b9d-3043-bee3-fc5925c90273 ethernet enp0s3 lo 0d4c85b9-8910-4174-9ef3-667578f0c40d loopback lo
Configura el domini thos.local explícitament a la connexió netplan-enp0s3 (canvia aquest nom pel que t’hagi aparegut a
tu):
sudo nmcli con modify "netplan-enp0s3" ipv4.dns "10.0.2.10"sudo nmcli con modify "netplan-enp0s3" ipv4.dns-search "thos.local"sudo nmcli con up "netplan-enp0s3"
Verifica la configuració DNS:
resolvectl status enp0s3
Sortida esperada:
Link 2 (enp0s3) Current Scopes: DNS Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupportedCurrent DNS Server: 10.0.2.10 DNS Servers: 10.0.2.10 DNS Domain: thos.local Default Route: yes
# Muntar una comparticiósudo mount -t cifs //dc1/dades /mnt/dades \-o username=nom.cognom,domain=THOS,vers=3.0# Muntatge permanent a /etc/fstab//dc1/dades /mnt/dades cifs username=nom.cognom,password=P@ss,domain=THOS,vers=3.0 0 0
13. Directives de grup (GPO)
Samba admet la gestió de GPO (Group Policy
Objects), tot i que amb suport parcial respecte a Windows Server. La
forma més còmoda de gestionar GPO és des d’un client Windows amb
RSAT.
13.1. Ordres bàsiques de
GPO amb samba-tool
# Llistar totes les GPOsudo samba-tool gpo listall# Crear una nova GPOsudo samba-tool gpo create "Política de Contrasenyes"\-U administrator%'P@ssw0rd123'# Vincular una GPO a una OUsudo samba-tool gpo setlink \"OU=Alumnes,OU=Centres,DC=thos,DC=local"\ {GUID_GPO} \-U administrator%'P@ssw0rd123'# Eliminar un vinclesudo samba-tool gpo dellink \"OU=Alumnes,OU=Centres,DC=thos,DC=local"\ {GUID_GPO} \-U administrator%'P@ssw0rd123'
13.2. Exemple:
Política de contrasenyes del domini
# Veure la política de contrasenyes actualsudo samba-tool domain passwordsettings show# Modificar la política de contrasenyessudo samba-tool domain passwordsettings set \--min-pwd-length=8 \--min-pwd-age=1 \--max-pwd-age=90 \--history-length=10 \--complexity=on
14. Resolució de problemes
14.1. Ordres de diagnosi
# Verificar l'estat general del dominisudo samba-tool domain level show# Verificar replicació (si hi ha múltiples DC)sudo samba-tool drs showrepl# Comprovar els registres DNS del dominisudo samba-tool dns query dc1 thos.local @ ALL \-U administrator%'P@ssw0rd123'# Veure registres del serveisudo journalctl -u samba-ad-dc -fsudo journalctl -u samba-ad-dc --since"1 hour ago"# Verificar Kerberossudo samba-tool user getpassword administrator \--attributes=unicodePwd
14.2. Problemes habituals
Problema
Causa probable
Solució
El servei no arrenca
Port 53 ocupat per systemd-resolved
Desactivar systemd-resolved
Error de Kerberos Clock skew too great
Diferència horària > 5 min
Sincronitzar l’hora amb NTP
Error DNS NXDOMAIN
DNS apunta al servidor incorrecte
Apuntar DNS a 127.0.0.1
No es pot unir Windows al domini
Tallafoc bloquejant ports
Obrir ports 53, 88, 135, 389, 445
kinit falla amb KDC unreachable
El servei Samba no corre
systemctl start samba-ad-dc
Error NT_STATUS_NO_LOGON_SERVERS
smb.conf incorrecte o DC inassolible
Revisar configuració de xarxa
Winbind no resol usuaris
NSS mal configurat
Revisar /etc/nsswitch.conf
14.3. Reinici net de
l’aprovisionament
Si cal refer l’aprovisionament des de zero:
# Atura el serveisudo systemctl stop samba-ad-dc# Elimina les dades del dominisudo rm -rf /var/lib/samba/private/*sudo rm -rf /var/lib/samba/sysvol/*sudo rm /etc/samba/smb.conf# Torna a aprovisionarsudo samba-tool domain provision ...
⚠️
Avís
Això eliminarà tots els usuaris, grups i GPO existents. Feu-ho només
en entorns de proves.
15. Referència d’ordres
Gestió del domini
Ordre
Descripció
samba-tool domain provision
Provisionar un nou domini
samba-tool domain level show
Mostrar el nivell funcional del domini
samba-tool domain passwordsettings show
Veure la política de contrasenyes
samba-tool domain passwordsettings set
Modificar la política de contrasenyes
samba-tool drs showrepl
Mostrar l’estat de replicació
Gestió d’usuaris
Ordre
Descripció
samba-tool user create <nom> <pass>
Crear un usuari
samba-tool user list
Llistar tots els usuaris
samba-tool user show <nom>
Mostrar informació d’un usuari
samba-tool user setpassword <nom>
Canviar la contrasenya
samba-tool user disable <nom>
Desactivar un usuari
samba-tool user enable <nom>
Activar un usuari
samba-tool user delete <nom>
Eliminar un usuari
Gestió de grups
Ordre
Descripció
samba-tool group add <nom>
Crear un grup
samba-tool group list
Llistar tots els grups
samba-tool group listmembers <nom>
Llistar membres d’un grup
samba-tool group addmembers <grup> <usuari>
Afegir membre al grup
samba-tool group removemembers <grup> <usuari>
Eliminar membre del grup
samba-tool group delete <nom>
Eliminar un grup
Gestió DNS
Ordre
Descripció
samba-tool dns query <dc> <zona> @ ALL
Consultar els registres d’una zona
samba-tool dns query <dc> <zona> <host> <tipus>
Registres d’un host concret
samba-tool dns add <dc> <zona> <host> A <IP>
Afegir registre A
samba-tool dns delete <dc> <zona> <host> A <IP>
Eliminar registre A
samba-tool dns zonelist <dc>
Llistar zones DNS
samba-tool dns query <dc> _tcp SRV
Registres SRV (Kerberos, LDAP…)
Kerberos
Ordre
Descripció
kinit <usuari>@DOMINI
Obtenir un tiquet Kerberos
klist
Llistar tiquets actius
kdestroy
Eliminar tots els tiquets
Winbind
Ordre
Descripció
wbinfo -u
Llistar usuaris del domini
wbinfo -g
Llistar grups del domini
wbinfo -a <usuari>%<pass>
Autenticar un usuari
wbinfo --ping-dc
Verificar connexió amb el DC
net ads info
Informació sobre el domini AD
net ads join -k
Unir un client al domini
Annex A: Script de
creació massiva d’usuaris
#!/bin/bash# create_users.sh - Creació massiva d'usuaris al domini Samba AD-DC# Ús: ./create_users.sh usuaris.csv# Format CSV: nom,cognom,username,ou,grupDOMAIN="thos.local"DEFAULT_PASS="Canvia@2026"DC_BASE="DC=thos,DC=local"whileIFS=','read-rnomcognomusernameougrup;doecho"Creant usuari: $username ($nom$cognom)"sudo samba-tool user create "$username""$DEFAULT_PASS"\--given-name="$nom"\--surname="$cognom"\--mail-address="${username}@${DOMAIN}"\--userou="OU=${ou},${DC_BASE}"\--must-change-at-next-loginsudo samba-tool group addmembers "$grup""$username"done<"$1"echo"Creació d'usuaris completada."
man samba-tool # Referència completa de samba-toolman smb.conf # Opcions de configuració de Sambaman wbinfo # Eines de consulta Winbindman kinit # Obtenció de tickets Kerberosman net # Eina de xarxa de Sambaman smbclient # Client SMB/CIFSman ldbsearch # Consultes LDAP a les bases de dades de Sambaman realm # Gestió de dominis amb realmd