Cicle formatiu: Sistemes Microinformàtics i Xarxes (SMX)
Mòdul: 0224 — Sistemes operatius en xarxa
Sistema operatiu: Ubuntu Server 26.04 LTS
Samba és una suite de programari lliure (llicència GPL) que implementa el protocol SMB/CIFS de Microsoft sobre sistemes Unix/Linux. Gràcies a Samba, un servidor Linux pot oferir a clients Windows, Linux o macOS els mateixos serveis que oferiria un servidor Windows: compartició de fitxers, compartició d’impressores, autenticació d’usuaris i, si cal, fer de controlador de domini Active Directory.
El projecte existeix des de 1992 i és mantingut per la comunitat Samba, amb suport actiu per a totes les versions modernes de Windows.
Samba (paràmetre server role a smb.conf) es
pot configurar bàsicament de tres maneres:
| Rol | Paràmetre server role |
Descripció |
|---|---|---|
| Standalone Server | standalone server |
Servidor independent, sense domini. Autenticació local (usuaris del mateix sistema o base de dades pròpia de Samba). És el tema d’aquest document. |
| Domain Member | member server |
El servidor forma part d’un domini AD i delega l’autenticació al controlador de domini (DC). |
| Active Directory DC | active directory domain controller |
Samba actua com a controlador de domini AD complet (substituint un Windows Server DC). |
Aquest document se centra en el primer cas: servidor standalone en mode workgroup, és a dir, sense cap domini Active Directory al darrere. És la configuració més senzilla i adequada per a xarxes petites, aules de pràctiques o quan només cal compartir fitxers/impressores sense gestió centralitzada d’usuaris.
Si el que necessites és un controlador de domini AD amb Samba, consulta el document específic de Samba AD-DC, que segueix un procediment molt diferent.
/etc/passwd) i
ha de tenir una contrasenya Samba pròpia, emmagatzemada normalment en
una base de dades tdbsam
(/var/lib/samba/private/passdb.tdb).| Servei/dimoni | Unitat systemd | Funció |
|---|---|---|
smbd |
smbd.service |
Servei principal SMB/CIFS: compartició de fitxers i impressores, autenticació d’usuaris. |
nmbd |
nmbd.service |
Resolució de noms NetBIOS sobre IP i navegació de xarxa (browsing). Cada cop menys rellevant, ja que els clients moderns usen DNS. |
winbindd |
winbind.service |
Necessari només en mode domain member, per resoldre usuaris/grups del domini. No cal en mode standalone pur. |
Aquest procediment és vàlid per a Ubuntu Server 26.04 LTS i, en
general, per a qualsevol versió recent d’Ubuntu Server (24.04, 25.10…),
ja que el paquet samba i el format de smb.conf
es mantenen molt estables entre versions.
Actualitza la llista de paquets
sudo apt updateInstal·la Samba
sudo apt install sambaAmb això s’instal·len els binaris smbd, nmbd, les eines client (smbclient, smbpasswd, testparm…) i es crea el fitxer de
configuració per defecte a /etc/samba/smb.conf, a més
d’habilitar i arrencar automàticament els serveis smbd i nmbd.
Comprova la versió instal·lada:
smbd --versionSortida esperada:
Version 4.23.6-Ubuntu-4.23.6+dfsg-1ubuntu2.1Comprova l’estat dels serveis:
systemctl status smbd.serviceSortida esperada:
● smbd.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smbd.service; enabled; preset: enabled)
Active: active (running) since Thu 2026-07-02 10:53:38 UTC; 3min 0s ago
Invocation: eff6ecdbe5224b24b74c92beb7a49c92
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 2433 (smbd)
Status: "smbd: ready to serve connections..."
Tasks: 3 (limit: 1718)
Memory: 28.5M (peak: 28.8M)
CPU: 89ms
CGroup: /system.slice/smbd.service
├─2433 /usr/sbin/smbd --foreground --no-process-group
├─2437 "smbd: notifyd" .
└─2438 "smbd: cleanupd "Abans de tocar res, és bona pràctica fer una còpia del fitxer original:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.originalsmb.confEl fitxer /etc/samba/smb.conf s’organitza en seccions a
l’estil INI:
[global]: paràmetres generals del
servidor (nom NetBIOS, workgroup, seguretat, registre de logs,
etc.).[nom_recurs]: una secció per cada
recurs compartit (carpeta o impressora).[global]
workgroup = WORKGROUP
disable netbios = yes
server string = %h server (Samba, Ubuntu)
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
server role = standalone server
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
[recurs]
comment = Descripció del recurs
path = /srv/samba/recurs
browsable = yes
read only = no
guest ok = no| Paràmetre | Funció |
|---|---|
workgroup |
Nom del grup de treball (equivalent al workgroup de Windows). No confondre amb un domini AD. |
netbios name |
Nom pel qual el servidor es veurà a la xarxa NetBIOS/SMB. Per defecte, el hostname del sistema. |
disable netbios |
Activa/desactiva el protocol NetBIOS (ports 137/138 UDP i navegació/resolució de noms via broadcast). Els clients moderns (Windows 10/11, Linux) hi accedeixen igualment per IP o per DNS via SMB directe sobre el port 445/TCP. |
server role |
Defineix el rol del servidor: standalone server, member server o active directory domain controller. |
server string |
Descripció textual del servidor (visible en alguns clients). |
security |
Model de seguretat: user (recomanat, l’únic realment
suportat des de Samba 4) o share (obsolet). |
map to guest |
Com tractar sol·licituds sense credencials vàlides. Bad User és el valor típic per permetre accés d’invitat
controlat. |
guest account |
Compte del sistema (normalment nobody) que s’usa per a
l’accés anònim. |
log file |
Ruta del fitxer de log. %m s’expandeix pel nom NetBIOS
del client, generant un fitxer per client. |
max log size |
Mida màxima (en KB) de cada fitxer de log abans que Samba el rote automàticament. |
log level |
Nivell de detall del registre (0-10). 1 o 2 és suficient per a producció; valors alts només per
depurar. |
logging = file |
Indica que els logs es desen a fitxer (en lloc de, o a més de, syslog). Sintaxi moderna que substitueix l’antic paràmetre syslog. |
interfaces / bind interfaces only |
Restringeixen Samba a escoltar només en determinades interfícies de xarxa. |
hosts allow / hosts deny |
Control d’accés per IP/xarxa globalment o per recurs. |
dns proxy |
Sol deshabilitar-se (no) en xarxes petites sense
necessitats especials de resolució via WINS. |
[share])| Paràmetre | Funció |
|---|---|
path |
Ruta absoluta del directori compartit al sistema de fitxers Linux. |
comment |
Descripció visible del recurs. |
browsable |
Si el recurs apareix llistat en explorar el servidor
(yes/no). |
read only |
Si el recurs és de només lectura (yes) o permet
escriptura (no). |
guest ok |
Permet accés sense autenticació (yes) o exigeix
credencials (no). |
guest only |
Força que el recurs només accepti connexions d’invitat. |
valid users |
Llista d’usuaris o grups (@grup) autoritzats a accedir
al recurs. |
write list |
Usuaris/grups amb permís d’escriptura encara que read only = yes. |
create mask / directory mask |
Permisos Unix (octal) aplicats als fitxers/directoris nous creats via Samba. |
force user / force group |
Força que totes les operacions es facin com un usuari/grup concret, independentment de qui s’hagi connectat. |
inherit permissions |
Els fitxers/subdirectoris nous hereten els permisos del directori pare en lloc de la màscara per defecte. |
printable |
Marca el recurs com a impressora (yes) en lloc de
carpeta. |
Aquest és l’escenari més habitual i recomanable: cada usuari necessita unes credencials per accedir al recurs.
/etc/samba/smb.confsudo nano /etc/samba/smb.conf[global]
workgroup = THOS
disable netbios = yes
server string = %h server (Samba, Ubuntu)
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
server role = standalone server
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
[dades]
comment = Recurs compartit de dades del departament
path = /srv/samba/dades
browsable = yes
read only = no
guest ok = no
valid users = @grupdades
create mask = 0660
directory mask = 0770
sudo mkdir -p /srv/samba/dades
sudo groupadd grupdades
sudo chgrp -R grupdades /srv/samba/dades
sudo chmod -R 2770 /srv/samba/dadesEl bit setgid (2 inicial) fa que els fitxers
nous heretin el grup del directori pare, cosa molt útil en recursos
compartits per diversos usuaris. Consulta Bits
especials per saber-ne més d’aquest tema.
Un usuari Samba ha d’existir prèviament com a usuari del sistema. Si només necessita accedir a Samba (no fer iniciar sessió local), es pot crear sense shell d’inici de sessió:
sudo adduser --no-create-home --shell /usr/sbin/nologin --ingroup grupdades ramonlNew password:
Retype new password:
passwd: s'ha actualitzat la contrasenya satisfactòriament
S'està canviant la informació d'usuari per a ramonl
Introduïu el nou valor, o premeu INTRO per al predeterminat
Nom complet []: ramon lopez
Número de sala []:
Telèfon de la feina []:
Telèfon de casa []:
Altre []:
Is the information correct? [Y/n] YI després donar-li una contrasenya Samba (independent de la contrasenya Unix):
sudo smbpasswd -a ramonlNew SMB password:
Retype new SMB password:
Added user ramonl.Per activar/desactivar o eliminar un usuari Samba:
sudo smbpasswd -e ramonl # habilitar
sudo smbpasswd -d ramonl # deshabilitar
sudo smbpasswd -x ramonl # eliminarLlistar els usuaris Samba donats d’alta:
sudo pdbedit -L -v---------------
Unix username: ramonl
NT username:
Account Flags: [U ]
User SID: S-1-5-21-3019385091-423839488-3638041515-1000
Primary Group SID: S-1-5-21-3019385091-423839488-3638041515-513
Full Name: ramon lopez
Home Directory: \\SERVER\ramonl
HomeDir Drive:
Logon Script:
Profile Path: \\SERVER\ramonl\profile
Domain: SERVER
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: dc., 06 de febr. 2036 15:06:39 UTC
Kickoff time: dc., 06 de febr. 2036 15:06:39 UTC
Password last set: dj., 02 de jul. 2026 11:36:42 UTC
Password can change: dj., 02 de jul. 2026 11:36:42 UTC
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAbans de reiniciar el servei, sempre cal validar la
sintaxi amb testparm:
testparmMostra els errors de sintaxi (si n’hi ha) i, després, un resum de la configuració efectiva carregada.
Sortida esperada:
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback)
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitionsEns informa que la sintaxi és correcta (Loaded services file OK.), i que el rol del servidor és ROLE_STANDALONE.
Reinicia
sudo systemctl restart smbd.serviceHabilita perquè s’iniciï automàticament en cada arrencada del sistema
sudo systemctl enable smbd.serviceSynchronizing state of smbd.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable smbdsudo ufw allow sambasamba és un perfil predefinit d’UFW que obre els ports
necessaris (139/TCP, 445/TCP, 137/UDP i 138/UDP).
sudo nano /etc/samba/smb.confPer a recursos públics, sense necessitat de credencials:
[public]
comment = Recurs públic sense autenticació
path = /srv/samba/public
browsable = yes
read only = no
guest ok = yes
guest only = yes
sudo mkdir -p /srv/samba/public
sudo chown nobody:nogroup /srv/samba/public
sudo chmod 0777 /srv/samba/public
testparm
sudo systemctl restart smbd.serviceUn recurs 100% obert i amb escriptura és còmode per a proves, però suposa un risc de seguretat en producció: qualsevol dispositiu de la xarxa hi podrà escriure i esborrar sense control ni traçabilitat.
Instal·la smbclient
sudo apt install smbclientLlista els recursos compartits:
smbclient -L localhost -U ramonlSortida:
Password for [THOS\ramonl]:
Sharename Type Comment
--------- ---- -------
dades Disk Recurs compartit de dades del departament
public Disk Recurs públic sense autenticació
IPC$ IPC IPC Service (server server (Samba, Ubuntu))
SMB1 disabled -- no workgroup availableConnecta’t a un recurs:
smbclient //localhost/dades -U ramonlSortida:
Password for [THOS\ramonl]:
Try "help" to get a list of possible commands.
smb: \> dir
. D 0 Thu Jul 2 12:03:38 2026
.. D 0 Thu Jul 2 12:03:38 2026
fitxer N 10 Thu Jul 2 12:03:38 2026
11758760 blocks of size 1024. 5549648 blocks available
smb: \> qMunta el recurs amb el client CIFS del kernel:
sudo apt install cifs-utils
sudo mkdir -p /mnt/dades
sudo mount -t cifs //<IP_SERVIDOR>/dades /mnt/dades -o username=ramonl,vers=3.0Per fer-ho persistent a /etc/fstab (evitant desar la
contrasenya en clar, utilitzant un fitxer de credencials):
sudo tee /etc/samba/credentials.ramonl > /dev/null <<'EOF'
username=ramonl
password=LaContrasenyaAqui
EOF
sudo chmod 600 /etc/samba/credentials.ramonlEdita el fitxer /etc/fstab
sudo nano /etc/fstab//<IP_SERVIDOR>/dades /mnt/dades cifs credentials=/etc/samba/credentials.ramonl,vers=3.0,uid=1000,gid=1000,iocharset=utf8 0 0
Des de l’Explorador de fitxers, a la barra d’adreces:
\\<IP_SERVIDOR>\dadesWindows demanarà usuari i contrasenya (les de Samba, creades amb smbpasswd), tret que el recurs sigui d’accés d’invitat.
| Acció | Ordre |
|---|---|
Validar sintaxi de smb.conf |
testparm |
| Veure logs generals | sudo tail -f /var/log/samba/log.smbd |
| Veure logs d’un client concret | sudo tail -f /var/log/samba/log.<netbios_client> |
| Connexions actives | sudo smbstatus |
| Estat del servei | systemctl status smbd |
| Reiniciar sense tallar connexions actives (recàrrega) | sudo smbcontrol all reload-config |
Samba recarrega automàticament la configuració cada pocs minuts, però
és recomanable fer sempre testparm abans de confiar-hi, i
reiniciar el servei (systemctl restart smbd) quan es
canviïn paràmetres que ho requereixin explícitament (p. ex. security).
Ubuntu inclou un perfil d’AppArmor per a smbd
(usr.sbin.smbd) que pot restringir a quins directoris té
accés Samba. Si es comparteixen directoris fora de les rutes habituals
(/srv, /home) i apareixen errors de
“Permission denied” tot i tenir els permisos Unix correctes, cal
revisar:
sudo aa-status | grep smbd
sudo journalctl -xe | grep -i apparmorI, si cal, ampliar el perfil local a /etc/apparmor.d/local/usr.sbin.smbd afegint-hi la ruta
compartida.
| Standalone (workgroup) | Domain member / AD DC | |
|---|---|---|
| Gestió d’usuaris | Local, per servidor
(smbpasswd/pdbedit) |
Centralitzada al controlador de domini |
| Escalabilitat | Baixa (cada servidor és independent) | Alta (un sol directori per a tota la xarxa) |
| Complexitat de configuració | Baixa | Alta (Kerberos, DNS, replicació…) |
| Cas d’ús típic | Xarxa petita, laboratori, un sol servidor de fitxers | Empresa amb diversos servidors i molts usuaris |
| Inici de sessió de xarxa (domain logon) | No | Sí |
smb.conf.man smb.conf, man smbpasswd, man testparm.