Samba è una potente suite di software open-source che consente la condivisione di file e stampanti tra sistemi Linux/Unix e client Windows. Permette ai sistemi Linux di apparire come file server Windows, rendendolo uno strumento essenziale in ambienti con sistemi operativi misti, come le reti aziendali o le configurazioni domestiche.

Questa guida illustra l’installazione e la configurazione di Samba su un sistema Linux, consentendo di condividere le directory e gestire i permessi di accesso con facilità.

Che cos’è Samba?

Samba implementa i protocolli SMB (Server Message Block) e CIFS (Common Internet File System) utilizzati da Windows per la condivisione di file e stampanti. Permette a:

  • Ai sistemi Linux di condividere file con le macchine Windows

  • Ai sistemi Linux di accedere alle cartelle condivise di Windows

  • Accesso centralizzato alle risorse condivise in reti eterogenee

Passo 1: Installare Samba

Il processo di installazione può variare leggermente a seconda della distribuzione Linux in uso.

Per Debian/Ubuntu:

sudo apt update
sudo apt install samba

Per CentOS/RHEL (7/8 ):

sudo yum install samba samba-client samba-common

Per Fedora:

sudo dnf install samba

Per verificare l’installazione:

smbd --versione

Passo 2: Creare una directory condivisa

Create la directory che volete condividere con gli utenti della rete.

sudo mkdir -p /srv/samba/shared
sudo chown -R nobody:nogroup /srv/samba/shared
sudo chmod -R 0775 /srv/samba/shared

Questi permessi consentono l’accesso in lettura/scrittura agli utenti guest (possono essere modificati per gli utenti autenticati).

Passo 3: Configurare il server Samba

Aprire il file di configurazione di Samba:

sudo nano /etc/samba/smb.conf

In fondo al file, aggiungere il seguente blocco:

[Shared]
percorso = /srv/samba/condiviso
navigabile =
solo lettura = no
ospite ok =

Questo definisce una cartella condivisa denominata “Shared” accessibile senza password (accesso guest). Per una maggiore sicurezza, disabilitare l’ok dell'ospite e configurare l’accesso a livello di utente.

Dopo la modifica, salvare e chiudere il file.

Passo 4: Impostare un utente Samba

Se preferite l’autenticazione dell’utente rispetto all’accesso guest, create un utente Samba:

sudo useradd sambauser
sudo passwd sambauser
sudo smbpasswd -a sambauser

Quindi modificate il blocco di condivisione in smb.conf:

[Shared]
percorso = /srv/samba/condiviso
utenti validi = sambauser
sola lettura = no

Passo 5: Riavviare i servizi Samba

Applicare la nuova configurazione riavviando i servizi Samba:

sudo systemctl restart smbd
sudo systemctl enable smbd

Per controllare lo stato:

sudo systemctl status smbd

Passo 6: Regolare il firewall

Se si utilizza un firewall, consentire il traffico di Samba:

Per UFW (Ubuntu):

sudo ufw allow 'Samba'

Per firewalld (CentOS, Fedora):

sudo firewall-cmd --permanent --zone=public --add-service=samba
sudo firewall-cmd --reload

Passo 7: accedere alla cartella condivisa

Da Windows:

  • Aprire Esplora file

  • Inserite l’indirizzo IP del vostro sistema Linux nella barra degli indirizzi, ad es:

    \\192.168.1.100\Shared
  • Autenticare se necessario

Da un altro sistema Linux:

Utilizzare l’utilità smbclient:

smbclient //192.168.1.100/Shared -U sambauser

Oppure montare la condivisione:

sudo mount -t cifs //192.168.1.100/Shared /mnt/samba -o username=sambauser

Conclusione

Samba è uno strumento potente che colma il divario tra la condivisione di file in Linux e in Windows. Sia che si tratti di configurare un server multimediale domestico o di gestire le risorse di una rete aziendale, Samba offre la flessibilità e la compatibilità necessarie per garantire un’interoperabilità senza problemi. Una configurazione adeguata, il controllo dell’accesso degli utenti e le regole del firewall contribuiranno a garantire una condivisione dei file sicura ed efficiente.

Se avete bisogno di aiuto per configurazioni avanzate come la condivisione di stampanti, Samba come controller di dominio o l’integrazione con Active Directory, non esitate a richiedere una guida di approfondimento.