martedì 25 giugno 2013

Raspberry Pi - come installare e configurare Samba per condividere un hard disk esterno sulla rete casalinga

In questa guida vedremo come creare un NAS (Network Attached Storage) con il Raspberry Pi. Per chi non lo sapesse, un NAS è un dispositivo collegato ad una rete la cui funzione è quella di condividere tra gli utenti della stessa una memoria di massa. In pratica collegheremo il Raspberry Pi al router/modem di casa tramite cavo ethernet (andrebbe bene anche collegarlo tramite un adattatore wifi USB), quindi collegheremo un hard disk esterno alla porta USB del Raspberry e per finire installeremo e configureremo Samba per rendere accessibile a tutti i dispositivi collegati alla rete casalinga il contenuto dell'hard disk.

Se vi state chiedendo che cos'è Samba, è un progetto libero che fornisce servizi di condivisione file e stampati utilizzando il protocollo di condivisione SMB di Microsoft. La popolarità di Samba è dovuta dal fatto che è un software libero e permette la condivisione tra computer con diversi sistemi operativi, tra i quali Windows, OS X e Linux.
Perché dovremmo voler condividere un hard disk sulla rete casalinga? Per esempio potremmo mettere tutte le nostre foto ed i nostri video sull'hard disk condiviso così da potervi accedere dal nostro desktop, dal portatile o da un'altro dispositivo che utilizziamo a casa.

Il Raspberry Pi con un hard disk Western Digital Red da 2 Tera byte utilizzato come NAS


Collegare e montare l'hard disk esterno alla porta USB

Prima cosa da fare e collegare fisicamente l'hard disk alla porta USB del Raspberry Pi, successivamente dobbiamo montare, cioè rendere accessibile il contenuto dello stesso al nostro sistema.
Una cosa importante da sapere è che il Raspberry Pi non riesce ad alimentare un hard disk esterno USB, quindi dovrete fare in modo di alimentarlo esternamente. Come vedete nella foto io ho utilizzato una base alimentata, potete comunque scegliere un qualsiasi case che abbia un cavo di alimentazione.

Creiamo una cartella all'interno di /mnt che farà da punto di inizio del disco esterno, ad esempio:

sudo mkdir /mnt/nas

Ora con il comando lsblk andiamo ad identificare il nostro disco

lsblk

Verrà visualizzato sul terminale una lista dei dischi collegati:

NAME               MAJ:MIN    RM    SIZE    RO    TYPE    MOUNTPOINT
sda                            8:0           0       1.8T       0       disk
└─sda1                     8:1           0      1.8T        0       part
mmcblk0               179:0           0     14.9G      0       disk
├─mmcblk0p1      179:1          0      56M        0       part         /boot
└─mmcblk0p2      179:2          0      14.8G      0       part        /

Il disco mmcblk0 è la scheda SD che contiene il sistema operativo, sda invece è il disco collegato alla porta USB, il quale, in questo caso, ha una sola partizione identificata come sda1.
Di solito il primo disco esterno collegato è chiamato sda, quindi ci sarà sdb per il secondo disco, sdc per il terzo e così via. Per ogni disco ci possono essere una o più partizioni identificate dal numero che segue il nome del disco, quindi sda1 è la prima partizione del disco sda, sda2 la seconda partizione, ecc...
Per avere il massimo delle prestazioni dal nostro disco dobbiamo fare in modo che la partizione che useremo per il nostro NAS sia formattata con il file system di tipo ext4. Se così non fosse possiamo formattare la partizione con il comando mkfs.

ATTENZIONE: questo comando formatterà la partizione, quindi cancellerà qualsiasi file in esso contenuto. Ricordatevi di mettere al sicuro i file che non volete perdere prima di procedere!

Ora che siete sicuri di quello che fate:

sudo mkfs -t ext4 /dev/sda1

Il disco è pronto, possiamo montare la partizione con il comando:

sudo mount /dev/sda1 /mnt/nas

Per avere accesso completo al contenuto del disco in lettura e scrittura, modifichiamo il proprietario della cartella nas e di tutte le sotto cartelle ed i file in essa contenuti con il nostro nome utente.

sudo chown -R [nome_utente]:[nome_utente] /mnt/nas

Dove al posto di "[nome_utente]" inserirete il vostro nome utente, ad esempio se utilizzate l'utente di default pi, scriverete:

sudo chown -R pi:pi /mnt/nas

Ora possiamo guardare il contenuto del disco

ls /mnt/nas

Per poter fare in modo che disco venga montato all'avvio del sistema bisogna andare a modificare il file di configurazione /etc/fstab.
Apriamo fstab con l'editor di testo per configurare il montaggio automatico del disco

sudo nano /etc/fstab

All'interno del file ci sono tante righe quante sono le partizioni che vengono integrate nel file system principale. Ogni riga ha il seguente formato:

<file system> <punto di mount> <tipo> <opzioni> <dump> <pass>

Per il nostro disco la riga dovrà essere così

/dev/sda1    /mnt/nas    ext4    defaults    0     3

Dopo aver aggiunto la riga alla fine del file fstab, possiamo salvare premendo i tasti Ctrl + o, premiamo enter per confermare il nome del file, quindi usciamo dall'editor con Ctrl + x.
Ora possiamo riavviare il sistema con il disco collegato e questo verrà montato all'avvio.

Installare e configurare Samba

Prima di installare Samba aggiorniamo la lista delle versioni dei pacchetti del repository con

sudo apt-get update

quindi installiamo

sudo apt-get install samba samba-common-bin

questo comando installerà due pacchetti: samba e samba-common-bin, al termine dell'installazione passiamo alla configurazione.
Il file di configurazione di Samba si trova in /etc/samba, quindi:

cd /etc/samba

Facciamo una copia di sicurezza del file di configurazione con

sudo cp smb.conf smb.conf.original

Apriamo il file di configurazione smb.conf con l'editor di testo

sudo nano smb.conf

Andiamo a cercare la sezione identificata con ##### Authentication ##### e modifichiamo la riga
#  security = user
con
security = user

Quindi salviamo premendo i tasti Ctrl + o, premiamo enter per confermare il nome del file, quindi usciamo dall'editor con Ctrl + x.
Ora bisogna riavviare il server Samba per fare in modo che utilizzi le nuove impostazioni

sudo /etc/init.d/samba restart

Ora bisogna creare la password di Samba per il nostro utente, digitiamo il comando

sudo smbpasswd -a [nome_utente]

dove al posto di  [nome_utente] inserirete il vostro nome utente, per esempio Pi se non ne avete creato un altro. Vi verrà chiesto di inserire la password due volte.
Ora andiamo a modificare di nuovo il file di configurazione:

sudo nano smb.conf

Andiamo alla fine del file ed aggiungiamo queste righe:

[usb]
comment = USB Share
path = /mnt/nas
writeable = yes

Salviamo e usciamo dall'editor, quindi riavviamo il server Samba per l'ultima volta

sudo /etc/init.d/samba restart

Il vostro NAS è pronto!
Potete accedere dal vostro computer, se utilizzate una distribuzione GNU/Linux, tramite Nautilus, il gestore di file. Andate sul menu alla voce "inserisci posizione" e digitate:

smb://[indirizzo_IP]/usb/

Dove al posto di [indirizzo_IP] inserirete l'indirizzo IP del vostro Raspberry Pi. Vi verrà chiesto di inserire nome utente e password (quella che avete inserito per Samba), dopo di che potrete vedere il contenuto del disco come fosse sul vostro computer.
A questo punto, per velocizzare il collegamento al disco remoto, potete selezionare la voce "aggiungi posizione ai segnalibri", così non dovrete riscrivere l'indirizzo tutte le volte.

Per quanto riguarda OS X e Windows basterà esplorare la rete dal gestore dei file e vedrete comparire il server RaspberryPi (il nome di default del Raspberry se non lo avete modificato). Rispetto a Linux non cambia niente, vi verrà chiesto nome utente e password e potrete accedere al disco.