martedì 30 ottobre 2012

Condivisione file tra Ubuntu e Windows (samba)

Questa guida richiede una conoscenza di base dell'uso del terminale. Se non sai come si utilizza consulta la guida Utilizzare il terminale.

Capita spesso di dover condividere delle directory specifiche con altri utenti che utilizzano terminali con installato Microsoft Windows.
Per poterlo fare è sufficiente avere installato e configurato il pacchetto samba, disponibile nei repository di Ubuntu.
Per installarlo basta dare da terminale:
$sudo apt-get install samba

Una volta terminata l'installazione siamo pronti per la configurazione che può essere effettuata tramite interfaccia grafica (dal file manager Nautilus tanto per intenderci) oppure tramite modifica diretta del file di configurazione di samba.

In questa guida verrà spiegato come configurare samba direttamente dal suo file di configurazione, questo per fare in modo che la procedura sia la medesima per qualunque versione di Nautilus (e quindi di Ubuntu).

Configurazione di samba (smb.conf)

Per prima cosa, come al solito, creiamo una copia di backup del file di configurazione dando il comando

$sudo cp /etc/samba/smb.conf /etc/samba/smb.back

Apriamo il file /etc/samba/smb.conf (ad esempio con sudo nano /etc/samba/smb.conf), che risulterà diviso in due sezioni, una globale [in cui è possibile impostare il nome visualizzato e il workgroup] e una in cui verranno elencate le singole condivisioni.

Per la parte globale:

  • se vogliamo cambiare il nome visualizzato dobbiamo cercare all'interno del file di configurazione la riga contenente server string e cambiare la scritta %h server (Samba, Ubuntu) [quella alla destra dell'uguale] con il nome desiderato;
  • per cambiare il gruppo di lavoro bisognerà invece cercare la voce workgroup e cambiare il valore a destra dell'uguale con il nome del gruppo di lavoro desiderato.

la sezione globale contiene molte altre configurazioni, per le quali si rimanda all'Official Samba HOW-TO.

Per configurare le condivisioni portiamoci in fondo al file ed inseriamo, per ogni directory che si vuole condividere, le seguenti righe

[share]
    path = /home/share
    read only = yes
    guest ok = yes

modificando le righe come segue:

  • [share] è il nome della directory che verrà visualizzato agli utenti che accedono ai file condivisi, non deve necessariamente coincidere con il nome della directory contenuta sul pc e va sempre inserito tra parentesi quadre;
  • path = /home/share è il percorso locale della directory da condividere;
  • read only = yes serve per stabilire se gli utenti che accedono ai file condivisi dalla rete hanno il permesso di leggere oppure leggere/scrivere i file. Per permettere la scrittura bisognerà sostituire la scritta yes con no;
  • guest ok = yes serve per stabilire se per visualizzare (o visualizzare e modificare) i file è necessario di disporre di un nome utente e di una password o è possibile accedervi anche da ospite. Per impostare l'accesso protetto da utente e password cambiare la scritta yes in no. Per sapere come configurare gli utenti e le password per la condivisione continua più avanti.

Dopo aver modificato il file aggiungendo tutte le condivisioni necessarie salviamolo e riavviamo il servizio samba dando da terminale

$sudo /etc/init.d/smbd restart

dopo aver dato l'invio, le condivisioni configurate dovrebbero essere disponibili sulla rete.

Configurare gli utenti

Questa parte di guida suppone una conoscenza di base dei permessi su directory e file, se non ne sei a conoscenza consulta la guida Gestione utenti e gruppi da terminale.

Per creare utenti samba è necessario creare anche degli utenti locali sulla macchina in uso. Per farlo diamo da terminale:

$sudo useradd -Mg sambashare NOME_UTENTE

sostituendo NOME_UTENTE con il nome dell'utente che si desidera creare; il parametro -M serve per non creare una home directory in /home/.
Impostiamo ora una password per l'utente appena creato dando

$sudo passwd NOME_UTENTE

ed inserendo due volte la nuova password.

Aggiungiamo ora l'utente creato alla lista degli utenti samba dando da terminale

$sudo smbpasswd -a NOME_UTENTE

ed inseriamo la medesima password inserita con il comando passwd.

A questo punto siamo pronti per utilizzare l'utente per accedere ai file condivisi tramite samba, prestando particolare attenzione ai permessi su tale directory, infatti se il proprietario della directory non è l'utente appena creato (NOME_UTENTE) e i file non fanno parte del suo gruppo, non sarà possibile modificarli o accedervi prima di aver impostato i permessi di lettura/scrittura alla directory in questione e ai file contenuti. Per farlo possiamo, ad esempio, dare da terminale il comando

$sudo chmod -R 777 DIRECTORY

sostituendo DIRECTORY con la directory locale.
In questo modo tutti i file e le sotto directory contenute verranno impostate per concedere permessi di lettura, scrittura ed esecuzione per qualsiasi utente.