Samba File Sharing Linux Windows
Introduzione
Samba: il Ponte tra Linux e Windows
In ambienti misti dove coesistono macchine Linux e Windows, la condivisione di file e risorse rappresenta una necessità quotidiana. Samba è la soluzione open-source per eccellenza che implementa il protocollo SMB/CIFS (Server Message Block / Common Internet File System) su sistemi Unix-like, consentendo una comunicazione trasparente con i client Windows. Samba è oggi uno strumento maturo e affidabile, integrato in quasi tutte le distribuzioni Linux. Grazie a Samba è possibile non solo condividere cartelle e stampanti, ma anche integrare un server Linux in un dominio Active Directory di Windows.
In questa guida completa vedremo come installare, configurare e mettere in produzione un server Samba su Linux, con particolare attenzione alla sicurezza, alla gestione degli utenti e alla risoluzione dei problemi più comuni.
Prerequisiti
Prima di procedere con l’installazione, assicurati di avere:
- Una distribuzione Linux (SysLinuxOS, Debian, CentOS/RHEL o Fedora)
- Accesso root o privilegi sudo
- Connettività di rete tra i sistemi Linux e Windows
- Conoscenza base della riga di comando Linux
- Il firewall configurato per consentire le porte SMB (137, 138 UDP; 139, 445 TCP)
Nota: Gli esempi di questa guida sono stati testati su SysLinuxOS 13. I comandi potrebbero variare leggermente su altre distribuzioni.
Installazione di Samba su Linux
SysLinuxOS e Debian
Su sistemi basati su Debian, l’installazione avviene tramite APT:
sudo apt update sudo apt install samba samba-common-bin -y
Dopo l’installazione, verifica che i servizi siano attivi:
sudo systemctl status smbd nmbd
Abilita i servizi all’avvio del sistema:
sudo systemctl enable smbd nmbd sudo systemctl start smbd nmbd
Configurazione del File smb.conf
Il cuore di Samba è il file di configurazione /etc/samba/smb.conf. Prima di modificarlo, crea un backup:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
Apri il file con un editor di testo:
sudo nano /etc/samba/smb.conf
Sezione [global]
La sezione [global] definisce i parametri generali del server. Ecco una configurazione tipica per una rete locale:
[global] workgroup = WORKGROUP server string = Samba Server %v netbios name = LINUXSERVER security = user map to guest = bad user dns proxy = no 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 = *Entersnews*spassword:* %nn *Retypesnews*spassword:* %nn *passwordsupdatedssuccessfully* . pam password change = yes usershare allow guests = yes
Creare una Condivisione Pubblica (Guest)
Per condividere una cartella accessibile a tutti senza autenticazione:
[pubblico] path = /srv/samba/pubblico browsable = yes writable = yes guest ok = yes read only = no create mask = 0777 directory mask = 0777 force user = nobody
Crea la directory e assegna i permessi corretti:
sudo mkdir -p /srv/samba/pubblico sudo chmod 777 /srv/samba/pubblico sudo chown nobody:nogroup /srv/samba/pubblico
Creare una Condivisione Privata con Autenticazione
Per una cartella protetta da username e password:
[privato] path = /srv/samba/privato browsable = yes writable = yes guest ok = no valid users = @samba read only = no create mask = 0660 directory mask = 0770
Crea il gruppo Samba, la directory e imposta i permessi:
sudo groupadd samba sudo mkdir -p /srv/samba/privato sudo chown root:samba /srv/samba/privato sudo chmod 770 /srv/samba/privato
Gestione degli Utenti Samba
Samba mantiene un proprio database di password, separato da quello di sistema. Per aggiungere un utente, è necessario che l’account esista prima nel sistema Linux:
# Crea l'utente di sistema (se non esiste) sudo useradd -M -s /sbin/nologin mario # Aggiungi l'utente al gruppo samba sudo usermod -aG samba mario # Aggiungi l'utente al database Samba e imposta la password sudo smbpasswd -a mario
Per abilitare o disabilitare un utente Samba:
# Abilita utente sudo smbpasswd -e mario # Disabilita utente sudo smbpasswd -d mario # Elenca tutti gli utenti Samba sudo pdbedit -L -v
Configurazione del Firewall
Per consentire il traffico Samba attraverso UFW su Ubuntu:
sudo ufw allow samba sudo ufw status
Su sistemi con firewalld (CentOS/Fedora):
sudo firewall-cmd --permanent --add-service=samba sudo firewall-cmd --reload sudo firewall-cmd --list-services
Se utilizzi iptables direttamente:
sudo iptables -A INPUT -p tcp --dport 445 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 139 -j ACCEPT sudo iptables -A INPUT -p udp --dport 137 -j ACCEPT sudo iptables -A INPUT -p udp --dport 138 -j ACCEPT
Verifica della Configurazione
Prima di riavviare i servizi, valida sempre la configurazione con il comando testparm:
sudo testparm
Se non ci sono errori, riavvia i servizi:
sudo systemctl restart smbd nmbd
Verifica le condivisioni disponibili dal server stesso:
smbclient -L localhost -U%
Connessione da Windows
Da un client Windows, puoi accedere alle condivisioni in diversi modi:
- Apri Esplora File e digita nella barra degli indirizzi:
\192.168.1.100(sostituisci con l’IP del server Linux) - Usa la funzione Mappa unità di rete per assegnare una lettera di unità permanente
- Da riga di comando Windows con:
net use Z: \192.168.1.100privato /user:mario
Connessione da Linux con smbclient
Per testare la connessione o accedere alle condivisioni da un altro client Linux:
# Elenca le condivisioni disponibili smbclient -L //192.168.1.100 -U mario # Connettiti a una condivisione specifica smbclient //192.168.1.100/privato -U mario # Monta una condivisione Samba come filesystem sudo mount -t cifs //192.168.1.100/privato /mnt/samba -o username=mario,password=tuapassword,uid=1000,gid=1000
Per un mount permanente, aggiungi una voce in /etc/fstab:
//192.168.1.100/privato /mnt/samba cifs credentials=/etc/samba/.smbcredentials,uid=1000,gid=1000 0 0
Crea il file delle credenziali:
sudo nano /etc/samba/.smbcredentials # Contenuto: username=mario password=tuapassword domain=WORKGROUP sudo chmod 600 /etc/samba/.smbcredentials
Troubleshooting: Problemi Comuni
Errore: “NT_STATUS_ACCESS_DENIED”
Questo errore indica un problema di permessi. Verifica che:
- L’utente sia presente nel database Samba:
sudo pdbedit -L - I permessi della directory siano corretti:
ls -la /srv/samba/ - SELinux o AppArmor non stiano bloccando l’accesso
# Su sistemi con SELinux abilitato sudo setsebool -P samba_export_all_rw 1 sudo chcon -t samba_share_t /srv/samba/privato -R
Il Server non Appare nella Rete Windows
Verifica che il servizio nmbd sia attivo e che il nome NetBIOS sia configurato correttamente. In Windows 10/11, il servizio Computer Browser potrebbe essere disabilitato:
sudo systemctl status nmbd # Controlla i log sudo tail -f /var/log/samba/log.nmbd
Errore di Autenticazione da Windows 10/11
Le versioni recenti di Windows hanno disabilitato per default il protocollo SMBv1. Assicurati di usare SMBv2 o SMBv3 aggiungendo in smb.conf:
[global] min protocol = SMB2 max protocol = SMB3
Problemi di Performance
Per ottimizzare le prestazioni di Samba su reti locali, aggiungi questi parametri nella sezione [global]:
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072 read raw = yes write raw = yes use sendfile = yes aio read size = 16384 aio write size = 16384
Controllare i Log di Samba
I log di Samba sono lo strumento principale per il debugging:
# Log generale sudo tail -f /var/log/samba/log.smbd # Log specifico per un client (IP o hostname) sudo cat /var/log/samba/log.192.168.1.50 # Aumenta il livello di logging temporaneamente sudo smbcontrol smbd debug 3
Sicurezza: Best Practice
Una configurazione Samba sicura dovrebbe seguire queste linee guida:
- Usa sempre SMBv2 o SMBv3: SMBv1 è vulnerabile (vedi EternalBlue/WannaCry)
- Limita l’accesso per IP: usa il parametro
hosts allow = 192.168.1.0/24 - Evita le condivisioni guest in produzione
- Usa password complesse per gli utenti Samba
- Aggiorna regolarmente Samba per patch di sicurezza
- Considera l’uso di VPN per accessi da reti esterne
Conclusione
Samba rappresenta una soluzione matura, flessibile e potente per l’integrazione di sistemi Linux in ambienti Windows. Con la configurazione corretta, è possibile creare infrastrutture di file sharing affidabili, sicure e performanti che soddisfano le esigenze sia di ambienti domestici che aziendali.
Samba File Sharing Linux Windows
enjoy 😉

