Skip to main content

Samba: rete mista e condivisa

Samba

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

  1. Apri Questo PC

  2. Clicca destro → Connetti unità di rete

  3. Specifica il percorso: \\indirizzo-ip-debian\NomeCondivisione

  4. 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.