Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Condividere file su Linux e Windows con Samba

Come creare un file server utilizzando Linux e il gestore di condivisioni Samba e garantire accesso sia a Linux sia a Windows.
Come creare un file server utilizzando Linux e il gestore di condivisioni Samba e garantire accesso sia a Linux sia a Windows.
Link copiato negli appunti

Spesso può essere utile avere la possibilità di accedere ai propri file via internet, senza necessariamente appoggiarsi a servizi esterni, per esempio per motivi di privacy. Inoltre, utilizzare un file server fatto in casa, ovvero un sistema in grado di consentire l’accesso e la gestione remota di file, può rivelarsi un’utile strumento di archiviazione, spesso più sicuro del tradizionale “hard disk portatile di backup”.

In questo articolo vedremo come mettere a punto proprio un file server, basando la nostra discussione su Samba. Si tratti di un servizio in grado di fornire funzionalità di file sharing, caratterizzato dall’essere rilasciato sotto licenza GPL. Samba è compatibile con la maggior parte dei sistemi operativi Linux moderni, ed in questo articolo vedremo come utilizzarlo su Ubuntu, sebbene ciò non vieta la possibilità di utilizzarlo pressocchè su qualsiasi altro sistema Linux.

Infine, vedremo qualche esempio di utilizzo, relativamente all’accesso al server da client Linux e Windows.

Installazione di Samba server

Le versioni server delle principali distribuzioni, in genere, includo di default una installazione di Samba. Se così non è, ed utilizziamo, come nel caso di Ubuntu, distribuzioni basate su Debian, possiamo comunque installare facilmente Samba mediante atp:

sudo apt-get install samba

In alternativa, la maggior parte delle distribuzioni fornisce la possibilità di installare Samba facendo direttamente riferimento ai repository ufficiali. Ad ogni modo, la pagina di download del sito ufficiale del progetto fornisce una guida di massima sull’installazione mediante compilazione del codice sorgente.

Una volta terminato il processo di installazione, avviamo il demone di Samba:

sudo /etc/init.d/smbd start

In alternativa possiamo utilizzare:

sudo service smbd start

Adesso possiamo passare alla fase di configurazione.

Configurazione iniziale

Il principale file di configurazione di Samba, in genere, è situato in /etc/samba/smb.conf. Dovremo quindi modificare questo file per personalizzarlo secondo le nostre esigenze. Prima, però, è bene prevenire qualsiasi problema, effettuando una copia di backup del file originale. Per farlo, utilizziamo il seguente semplice comando:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

Così facendo, salviamo una copia del file originale con il nome smb.conf_backup. Fatto ciò, utilizziamo un qualsiasi editor di testo, grafico o via terminale, per modificare il file di configurazione, utilizzando i permessi di amministratore. Per esempio, usando gedit:

sudo gedit /etc/samba/smb.conf

A questo punto, non ci resta che modificare i parametri che ci interessano. Il primo fra questi è il nome del workgroup cui apparterrà il server una volta attivo; per modificarlo, cerchiamo la seguente stringa:

workgroup = WORKGROUP

e modifichiamola a nostro piacimento. Se vogliamo che il server appartenga al workgroup GruppoHTML, utilizziamo:

workgroup = GruppoHTML

Se pensiamo di volere accedere al nostro server tramite sistemi MS Windows, può essere necessario far coincidere il nome del workgroup della rete Windows con quello impostato in smb.conf. Inoltre, è bene modificare anche il parametro server string, che funge da descrizione agli utenti che accedono al file server mediante le Risorse di Rete di Windows. Cerchiamo quindi questo parametro, e modifichiamolo opportunamente:

server string = FileServer

Impostati i nomi, non resta che occuparci degli utenti e delle risorse da condividere.

Risorse condivise e utenti

Per quanto riguarda le risorse, si tratta di dichiarare, nel file smb.conf, il path, i permessi ed i nomi pubblici delle directory che si vogliono rendere accessibili dall’esterno. Per farlo, ad ogni directory associamo una struttura così fatta:

[nomePubblico]
  path = /path/della/directory/pubblica
  public = yes
  writable = yes

Il parametro public, valorizzato a yes, consente l’accesso pubblico alla directory, mentre writable = yes consente agli utenti di scrivere remotamente sulla cartella. Ognuna delle strutture così fatte andrà inserita in coda al file smb.conf.

Una volta dichiarate tutte le cartelle da rendere pubbliche, non resta che pensare agli utenti. Al fine di rendere sicuro l’accesso al file server, è necessario specificare almeno uno username ed una password, che serviranno come credenziali di accesso alle directory pubbliche. Per farlo, utilizziamo il seguente comando:

smbpasswd -a nome_utente

Quest’ultimo associerà all’utente nome_utente una password da utilizzare per l’accesso remoto, che verrà richiesta interattivamente.

È anche possibile riferirsi a più utenti, ciascuno dei quali può accedere o meno alla propria home directory. Possiamo modificare l’accessibilità a tali directory private, modificando la sezione [homes] del file di configurazione:

[homes]
  comment = Home Directories
  browseable = no
  writable = yes

Il parametro browseable = no indica che le directory private non possono essere accedute da utenti diversi dal proprietario.

Vale la pena sottolineare che le password di accesso al sistema e quelle per l’utilizzo di Samba possono essere completamente diverse (ed è bene che lo siano), ma comunque ad ogni utente Samba deve corrispondere un utente del sistema. Se se ne vuole creare uno, si può utilizzare il comando useradd. Per comprendere il suo utilizzo, abbastanza intuitivo, è sufficiente riferirsi ad una qualsiasi guida o alla pagina di manuale del comando stesso.

A questo punto, terminata la configurazione, riavviamo Samba:

sudo /etc/init.d/smbd restart

In alternativa, possiamo usare anche:

sudo service smbd restart

Utilizzo del File Server da client Windows

Siamo finalmente pronti ad utilizzare il nostro file server. Vediamo, quindi, un esempio riassuntivo, che spiega come accedervi direttamente da piattaforme MS Windows.

Supponiamo di avere creato l’utente vito, e di avere utilizzato, per le directory home, le impostazioni viste al paragrafo precedente. Assumiamo, inoltre,di avere valorizzato come segue alcuni parametri:

workgroup = GruppoHTML
server string = FileServer
[pubblica]
	path = /home/vito/directory_pubblica
 	public = yes
	writable = yes

Per accedere, da Windows 7, alla directory pubblica, apriamo Computer, e qui clicchiamo su Connetti unità di rete. Nella finestra che si aprirà potremo, quindi, inserire un indirizzo di rete che punti alla macchina su cui è installato Samba, seguito dal nome della directory pubblica. Nel nostro caso, supponendo che la macchina si trovi all’indirizzo 192.168.1.64, faremo come mostrato nella figura seguente:

Accedere al File Server tramite Windows

Accedere al File Server tramite Windows

Cliccando su Fine, ci verranno richieste le credenziali di accesso, e da questo momento in poi sarà possibile accedere al file server con la stessa facilità di accesso ad un hard disk locale.

Se vogliamo accedere alla home directory (assumendo, come abbiamo fatto, che ciò sia consentito), inseriremo l’indirizzo della macchina seguito dal nome dell’utente, come mostrato nella figura seguente:

Accedere alla home directory di un utente mediante Windows

Accedere alla home directory di un utente mediante Windows

Utilizzo del File Server da client Linux

Sebbene OpenSSH sia, probabilmente, la soluzione migliore per la gestione di un file server Linux nel caso di sistemi con client Linux, è comunque possibile utilizzare Samba, in modo da rendere agevole l’utilizzo del server in maniera multi-piattaforma. Vediamo, quindi, come accedere ad una directory pubblica mediante un client Linux.

Samba ci mette a disposizione un semplice comando in grado di effettuare il mount di una directory condivisa su una directory locale: si tratta di smbmount. In maniera quasi trasparente all’utente che utilizza la condivisione, è possibile aggiungere, modificare o eliminare file dalla directory montata. La sintassi è la seguente:

smbmount //indirizzoServer/nomeCondivisione /path/destinazione -o username=user,password=pass,rw

Nell’esempio precente, supponendo che l’utente sia vito, con password 1234, possiamo procedere innanzitutto generando la directory di destinazione; per esempio, possiamo crearla in /mnt/condivisione. Dopodichè, non resta che utilizzare il comando smbmount, come precedentemente descritto. Assumendo che l’indirizzo del server è, ancora una volta, 192.168.1.64, la sequenza di istruzioni sarà:

mkdir /mnt/condivisione
smbmount //192.168.1.64 /mnt/condivisione –o username=vito,password=1234,rw

Le due lettere rw, alla fine del comando, indicano che l’accesso alla directory è in lettura e scrittura.

Accesso da remoto ai file Samba

Non è un caso che, nei due esempi precedenti, abbiamo utilizzato degli indirizzi IP locali per la macchina del server. Se vogliamo avere accesso ai nostri file anche remotamente, ed abbiamo un router NAT, abbiamo bisogno innanzitutto di reindirizzare le richieste al file server, verso il nostro computer. È necessario aprire alcune porte per consentire il corretto funzionamento del protocollo SMB/CIFS su cui si basa Samba. Esse sono:

  • 137, 138 e 139 per i protocolli TCP e UDP;
  • Potrebbero essere necessarie anche le porte 445, 389 e 901, in TCP, in base ai servizi utilizzati; in alcuni casi, vengono utilizzate diverse porte successive alla 2000.

Una volta aperte le porte, può essere una buona norma utilizzare un servizio di DNS dinamico, in modo da rendere statico e più user-readable l’indirizzo del file server.

Rimandiamo un’analisi più approfondita di questi dettagli alla documentazione ufficiale, disponibile sul sito di Samba.

Ti consigliamo anche