In questo tutorial, stiamo andando a imparare come installare e configurare un server Samba su Ubuntu per condividere file sulla rete locale. Samba è un’implementazione del protocollo SMB/CIFS gratuita e open source per Unix e Linux che consente la condivisione di file e stampe tra macchine Unix/Linux, Windows e macOS in una rete locale.

Samba è solitamente installato ed eseguito su Linux., Comprende diversi programmi che servono scopi diversi ma correlati, i due più importanti dei quali sono:

  • smbd: fornisce il servizio SMB/CIFS (condivisione e stampa di file), può anche fungere da controller di dominio di Windows.
  • nmbd: Questo demone fornisce il servizio dei nomi NetBIOS, ascolta le richieste del server dei nomi. Consente inoltre al server Samba di essere trovato da altri computer sulla rete.

Come installare Samba Server su Ubuntu

Samba è incluso nella maggior parte delle distribuzioni Linux. Per installare Samba su Ubuntu, è sufficiente eseguire il seguente comando nel terminale.,

sudo apt install samba samba-common-bin

L’ultima versione stabile disponibile è la 4.12.0, rilasciata il 03 marzo 2019. Per controllare la versione di Samba, eseguire

smbd --version

Output di esempio:

Version 4.7.6-Ubuntu

Per verificare se il servizio Samba è in esecuzione, eseguire il seguente comando.

systemctl status smbd nmbd

Per avviare questi due servizi, emettere il seguente comando:

sudo systemctl start smbd nmbd

Una volta avviato,smbd sarà in ascolto sulle porte TCP 139 e 445. nmbd sarà in ascolto sulle porte UDP 137 e 138.,

  • TCP 139: utilizzato per la condivisione di file e stampanti e altre operazioni.
  • TCP 445: la porta CIFS senza NetBIOS.
  • UDP 137: utilizzato per la navigazione in rete NetBIOS.
  • UDP 138: utilizzato per il servizio nome NetBIOS.

Se è stato abilitato il firewall UFW su Ubuntu, è necessario aprire le porte di cui sopra nel firewall con il seguente comando.

sudo ufw allow samba

Creare una condivisione Samba privata

In questa sezione, vedremo come creare una condivisione Samba privata che richiede al client di inserire username e password per ottenere l’accesso., Il file di configurazione Samba principale si trova in: /etc/samba/smb.conf. Puoi modificarlo nel terminale con un editor di testo a riga di comando come nano.

sudo nano /etc/samba/smb.conf

Nella sezione, assicurarsi che il valore diworkgroup sia lo stesso con le impostazioni del gruppo di lavoro dei computer Windows.,

workgroup = WORKGROUP

È possibile trovare l’impostazione sul vostro computer Windows andando su Control Panel > System and Security > System.

Quindi scorrere verso il basso fino alla fine del file. (In nano text editor, è possibile ottenere ciò premendo CTRL+W quindi CTRL+V. ) Aggiungi una nuova sezione come di seguito.,

Spiegazione:

  • Private è il nome della cartella che verrà visualizzato sulla rete Windows.
  • Il commento è una descrizione per la cartella condivisa.
  • Il parametro path specifica il percorso della cartella condivisa. Io uso /srv/samba/private/ come esempio. È inoltre possibile utilizzare una cartella nella directory home.
  • browseable = yes: Consente ad altri computer della rete di vedere il server Samba e la condivisione Samba., Se impostato su no, gli utenti devono conoscere il nome del server Samba e quindi immettere manualmente un percorso nel file manager per accedere alla cartella condivisa.
  • guest ok = no: Disabilita l’accesso ospite. In altre parole, è necessario inserire nome utente e password sul computer client per accedere alla cartella condivisa.
  • writable = yes: Concede sia il permesso di lettura e scrittura ai client.
  • valid users = @samba: Solo gli utenti del gruppo samba possono accedere a questa condivisione Samba.

Salvare e chiudere il file., (Per salvare il file in nano text editor, premere Ctrl+O, quindi premere Invio per confermare il nome del file da scrivere. Per chiudere il file, premere Ctrl+X.) Ora abbiamo bisogno di creare un utente Samba. Innanzitutto, dobbiamo creare un account utente Linux standard con il seguente comando. Sostituire username con il nome utente desiderato.

sudo adduser username

Verrà richiesto di impostare una password Unix., Dopodiché, devi anche impostare una password Samba separata per il nuovo utente con il seguente comando:

sudo smbpasswd -a username

Crea il gruppo samba.

sudo groupadd samba

E aggiungere questo utente al gruppo samba.

sudo gpasswd -a username samba

Crea la cartella di condivisione privata.

sudo mkdir -p /srv/samba/private/

Il gruppo samba deve avere le autorizzazioni di lettura, scrittura ed esecuzione sulla cartella condivisa. È possibile concedere queste autorizzazioni eseguendo il seguente comando., (Se il sistema non dispone del comandosetfacl, è necessario installare il pacchettoacl consudo apt install acl.)

sudo setfacl -R -m "g:samba:rwx" /srv/samba/private/

Quindi, eseguire il seguente comando per verificare se ci sono errori sintattici.

testparm

Ora tutto quello che resta da fare è riavviaresmbdenmbd demone.,

sudo systemctl restart smbd nmbd

Come creare una condivisione pubblica Samba senza autenticazione

Per creare una condivisione pubblica senza richiedere username e password, devono essere soddisfatte le seguenti condizioni.

  • Imposta security = user nella sezione globale del file di configurazione Samba. Sebbene sia possibile creare una condivisione pubblica con la modalitàsecurity = share, questa modalità di sicurezza è deprecata. Si consiglia vivamente di evitare la modalitàshare.
  • Imposta map to guest = bad user nella sezione globale del file di configurazione Samba., Ciò farà sì che smbd utilizzi un account guest per autenticare i client che non dispongono di account registrati sul server Samba. Poiché si tratta di un account guest, i clienti Samba non hanno bisogno di inserire la password.
  • Impostare guest ok = yes nella definizione di condivisione per consentire l’accesso guest.
  • Concede l’autorizzazione di lettura, scrittura ed esecuzione della cartella pubblica all’accountnobody, che è l’account guest predefinito.

Di fatto, le prime due condizioni sono già soddisfatte poiché Samba utilizza di default queste due impostazioni.,

Ecco una guida passo-passo per creare una condivisione pubblica. Innanzitutto, apri e modifica il file di configurazione Samba.

sudo nano /etc/samba/smb.conf

Nella sezione, assicurarsi che il valore diworkgroup sia lo stesso con le impostazioni del gruppo di lavoro dei computer Windows.

workgroup = WORKGROUP

È possibile trovare l’impostazione sul vostro computer Windows andando su Control Panel > System and Security > System.,

Quindi scorrere verso il basso fino alla fine del file e incollare le seguenti righe.

Salva e chiudi il file. Quindi, creare la cartella/srv/samba/public/.

sudo mkdir -p /srv/samba/public

Quindi assicurati che l’account nobody abbia le autorizzazioni di lettura, scrittura ed esecuzione sulla cartella pubblica eseguendo il seguente comando. (Se il sistema non dispone del comandosetfacl, è necessario installare il pacchettoacl consudo apt install acl.,)

sudo setfacl -R -m "u:nobody:rwx" /srv/samba/public/

Riavvia smbd e nmbd.

sudo systemctl restart smbd nmbd

Accesso alla cartella condivisa Samba da Windows

Su un computer Windows che si trova nella stessa rete, aprire Esplora file e fare clic su Network nel riquadro di sinistra. Se viene visualizzato il seguente messaggio, è necessario fare clic sul messaggio e attivare l’individuazione della rete e la condivisione dei file.

File sharing is turned off. Some network computers and devices might not be visible.

Quindi, inserisci \\seguito dall’indirizzo IP del server Samba nella barra degli indirizzi di Esplora file, in questo modo: \\192.168.0.102., Verrà visualizzato un elenco di risorse condivise sul server Samba.

Quindi fare doppio clic sulla cartella condivisa. Per accedere alla condivisione privata, è necessario inserire il nome utente e la password samba. Non è necessario farlo per accedere alla condivisione pubblica.

Una volta connesso, è possibile leggere, scrivere ed eliminare i file nella cartella condivisa Samba.

Errore di connessione

Se si ottiene il seguente errore:

You do not have permission to access \\hostname\share-name. Contact your network administrator to request access.

È possibile provare a connettersi alla condivisione Samba dal prompt dei comandi., Aprire un prompt dei comandi, quindi eseguire il seguente comando per chiudere la sessione Samba corrente.

net use \\samba-server-ip\share-name /delete

Quindi, connettiti alla condivisione Samba con il seguente comando:

net use \\samba-server-ip\share-name /user:samba-username password

Una volta completato correttamente il comando precedente, vai alla scheda Rete in Esplora file e ora dovresti essere in grado di accedere alla condivisione Samba.

Mappatura unità su Windows

Una caratteristica del sistema operativo Windows è la capacità di mappare una lettera di unità (come S:) a una directory remota., Per mappare la lettera di unità S: alla condivisione Samba, fare clic con il pulsante destro del mouse sulla cartella condivisa Samba e selezionare Mappa unità di rete. Quindi scegliere una lettera di unità e fare clic su Fine.

Una volta stabilita la mappatura dell’unità, le applicazioni possono accedere ai file nella condivisione Samba tramite la lettera di unità S:. E questa condivisione Samba verrà montata automaticamente quando si accede al computer Windows.,

Accesso alla cartella Samba Share in Nautilus File Manager su Linux

Se si utilizza Nautilus file manager, fare clic suOther Locations nel riquadro di sinistra. In basso, si vedrà un’opzione per la connessione al server. Per accedere alla condivisione Samba, digitare smb:// seguito dall’indirizzo IP del server Samba e premere Invio. Ad esempio:

  • smb://192.168.0.102

Verrà visualizzato un elenco di risorse condivise sul server Samba.,

Se si fa clic sulla cartella condivisa privata, sarà necessario inserire il nome utente e la password Samba. Se fai clic sulla cartella pubblica condivisa, scegli di connetterti come anonimo.

Monta automaticamente la condivisione Samba dalla riga di comando su Linux

Se è necessario montare automaticamente la condivisione Samba all’avvio, è possibile utilizzare la riga di comando per montare e quindi aggiungere una voce nel file /etc/fstab. Per fare ciò, è necessario installare il pacchettocifs-utils.,

CentOS/RHEL

sudo dnf install cifs-utils

Debian/Ubuntu

sudo apt install cifs-utils

Quindi creare un punto di montaggio per la condivisione Samba.

sudo mkdir /mnt/samba-private

Ora è possibile utilizzare il seguente comando per montare una cartella condivisa privata.

sudo mount -t cifs -o username=your_samba_username //192.168.0.102/private /mnt/samba-private/

Ti chiederà di inserire la password Samba. Successivamente, verrà montato nella directory/mnt/samba-private/.

Per montare automaticamente la condivisione Samba, modificare il file /etc/fstab.

sudo nano /etc/fstab

Aggiungi la seguente riga nel file.,

Dove:

  • //192.168.0.102 / privato: l’indirizzo IP del server Samba e il nome della condivisione.
  • /mnt / samba-private: punto di montaggio per la condivisione di Samba.
  • cifs: tipo di filesystem
  • x-systemd.automount: Questa opzione indica a systemd di creare un’unità automount per il file system. Lo usiamo perché assicura che il filesystem remoto sia montato solo dopo l’accesso alla rete.
  • _netdev: specifica che il montaggio richiede rete.
  • credentials=: Linux dovrebbe cercare le credenziali nel file/etc/samba-credential.conf.,
  • uid=1000,gid=1000: Per impostazione predefinita il filesystem montato sarebbe di proprietà dell’utente root. Usiamo uid e gid per cambiare la proprietà del filesystem. Normalmente si utilizza il proprio uid e gid, che sono entrambi 1000 per impostazione predefinita.
  • x-gvfs-show: Se si utilizza GNOME desktop environment o i suoi derivati, è possibile utilizzare questa opzione per mostrare il file system montato nel file manager.

Salvare e chiudere il file. Quindi creare il file delle credenziali.

sudo nano /etc/samba-credential.conf

Aggiungere le seguenti righe nel file.

username=your_samba_usernamepassword=samba_passworddomain=WORKGROUP

Salva e chiudi il file., Assicurarsi che solo l’utente root può leggere questo file.

sudo chmod 600 /etc/samba-credential.conf

Se si riavvia il computer Linux ora, la condivisione Samba verrà montata automaticamente.

Non è possibile scrivere nella condivisione Samba?

Il supporto CIFS descritto sopra consente di scrivere nella condivisione Samba. Se durante la creazione di un file viene visualizzato il seguente errore:

Read-only file system

Verificare di aver impostato writable = yes nel file di configurazione Samba., A volte, la cartella condivisa Samba si trova su un disco rigido esterno, quindi assicurati di montare il disco rigido esterno in modalità lettura-scrittura sul server Samba. Ad esempio, ho montato il mio disco rigido btrfs con la seguente riga in /etc/fstab.

LABEL=5TB /mnt/5TB btrfs defaults 0 0

Risulta che l’opzionedefaults non consente l’operazione di scrittura. Per renderlo scrivibile, aggiungi l’opzionerw.

LABEL=5TB /mnt/5TB btrfs defaults,rw 0 0

Quindi smontare il disco rigido. È necessario utilizzare il proprio punto di montaggio.

sudo umount /mnt/5TB

E montarlo di nuovo.,

sudo mount -a

Suggerimento per la risoluzione dei problemi

Se il server Samba non funziona come previsto, è possibile controllare i file di registro nella directory /var/log/samba/. È possibile aggiungere la seguente riga nella sezione del file/etc/samba/smb.conf per aumentare il livello di log se si desidera registrare ulteriori informazioni.

log level = 2

Avvolgendo

Questo è tutto! Spero che questo tutorial ti abbia aiutato a configurare Samba server su Ubuntu. Come sempre, se hai trovato questo post utile, quindi iscriviti alla nostra newsletter gratuita., E si consiglia anche di leggere il seguente articolo per condividere stampante sulla rete locale.

  • Imposta CUPS Print Server su Ubuntu (Bonjour, IPP, Samba, AirPrint)
Vota questo tutorial

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *