
Samba è un software libero che implementa il protocollo SMB/CIFS (Server Message Block / Common Internet File System), lo stesso usato da Windows per la condivisione di file e stampanti in rete.
Su una rete mista (dove convivono sistemi Linux/Unix, Windows e anche macOS), Samba svolge un ruolo fondamentale perché:
Condivisione file: permette a un server Linux/Unix di condividere cartelle che possono essere viste ed utilizzate da PC Windows e viceversa.
Condivisione stampanti: consente a computer Windows di usare stampanti collegate a un server Linux.
Autenticazione e gestione utenti: Samba può agire come Domain Controller (simile ad Active Directory), centralizzando login e permessi.
Compatibilità: rende Linux partecipe in reti locali aziendali o domestiche basate su Windows, senza bisogno di software aggiuntivo sui client.
Interoperabilità: macOS (che supporta SMB) può anch’esso accedere a risorse condivise via Samba.
👉 In sintesi: Samba è il “ponte” che consente ai sistemi Linux/Unix di parlare con Windows (e altri OS) in una rete locale, condividendo file, stampanti e servizi in maniera trasparente.
Ecco una guida completa per configurare Samba in una rete mista Debian/Windows:
1. Installazione di Samba su Debian
# Aggiorna il sistema sudo apt update && sudo apt upgrade # Installa Samba sudo apt install samba samba-common-bin # Installa client Samba (opzionale) sudo apt install smbclient cifs-utils
2. Configurazione di base
Backup della configurazione originale
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Modifica del file di configurazione
sudo nano /etc/samba/smb.conf
Configurazione minima consigliata
[global] # Nome del workgroup (deve corrispondere a quello di Windows) workgroup = WORKGROUP # Nome del server Debian in rete netbios name = DEBIAN-SERVER # Descrizione del server server string = File Server Debian # Sicurezza security = user # Supporto per Windows 10/11 server min protocol = SMB2 client min protocol = SMB2 # Codifica caratteri unix charset = UTF-8 dos charset = CP850 # Log log file = /var/log/samba/log.%m max log size = 1000 # Risoluzione nome name resolve order = bcast host # Interfacce di rete interfaces = 192.168.1.0/24 eth0 bind interfaces only = yes # Cartella condivisa pubblica (accesso anonimo) [Public] path = /samba/public browseable = yes read only = no guest ok = yes create mask = 0777 directory mask = 0777 # Cartella condivisa privata (accesso autenticato) [Private] path = /samba/private browseable = yes read only = no guest ok = no valid users = @samba-users create mask = 0770 directory mask = 0770
3. Creazione delle directory e impostazione permessi
# Crea le directory sudo mkdir -p /samba/public sudo mkdir -p /samba/private # Crea il gruppo per utenti Samba sudo groupadd samba-users # Imposta i permessi sudo chmod 777 /samba/public sudo chmod 770 /samba/private sudo chgrp samba-users /samba/private
4. Creazione utenti Samba
# Crea un utente di sistema (se non esiste) sudo useradd -m -G samba-users utente1 sudo passwd utente1 # Crea l'utente Samba (password diversa da quella di sistema) sudo smbpasswd -a utente1 # Abilita l'utente sudo smbpasswd -e utente1
5. Configurazione firewall
# Installa UFW (se non presente) sudo apt install ufw # Abilita le porte Samba sudo ufw allow 139/tcp sudo ufw allow 445/tcp sudo ufw allow 137/udp sudo ufw allow 138/udp # Abilita UFW sudo ufw enable
6. Riavvio e test del servizio
# Riavvia Samba sudo systemctl restart smbd nmbd sudo systemctl enable smbd nmbd # Verifica lo stato sudo systemctl status smbd sudo systemctl status nmbd # Test locale della condivisione smbclient -L localhost -U utente1
7. Configurazione su Windows
Accesso tramite Esplora file
Apri Esplora file
Nella barra degli indirizzi digita:
\\indirizzo-ip-debian
Esempio:
\\192.168.1.100
Mappatura unità di rete
Apri Questo PC
Clicca destro → Connetti unità di rete
Specifica il percorso:
\\indirizzo-ip-debian\NomeCondivisione
Seleziona "Connetti con credenziali diverse"
8. Configurazioni avanzate
Condivisione home directory
Aggiungi a /etc/samba/smb.conf
:
[homes] browseable = no read only = no valid users = %S
Configurazione per dominio Windows (opzionale)
[global] security = ads realm = DOMINIO.LOCALE workgroup = DOMINIO winbind use default domain = yes template shell = /bin/bash
9. Risoluzione problemi comuni
Verifica configurazione
# Test sintassi configurazione testparm # Verifica connessione smbclient -L //192.168.1.100 -U utente1
Problemi di permessi
# Verifica permessi directory ls -la /samba/ # Reimposta permessi ACL (se necessario) sudo apt install acl sudo setfacl -R -m g:samba-users:rwx /samba/private
Log e diagnostica
# Monitora log in tempo reale sudo tail -f /var/log/samba/log.smbd # Verifica porte aperte sudo netstat -tlnp | grep smb
10. Script di automazione
Crea uno script per aggiungere utenti rapidamente:
#!/bin/bash # save as /usr/local/bin/add-samba-user.sh if [ $# -ne 1 ]; then echo "Usage: $0 username" exit 1 fi USERNAME=$1 # Crea utente di sistema sudo useradd -m -G samba-users $USERNAME sudo passwd $USERNAME # Aggiungi a Samba sudo smbpasswd -a $USERNAME sudo smbpasswd -e $USERNAME echo "Utente $USERNAME creato con successo"
Rendi eseguibile: sudo chmod +x /usr/local/bin/add-samba-user.sh
Questa configurazione ti permetterà di avere un file server funzionante in rete mista Debian/Windows. Ricorda di adattare gli indirizzi IP e i nomi alle tue esigenze specifiche.