Cum putem partaja fișiere în rețea utilizând o placă Raspberry Pi?
Partajarea de fișiere în rețea este necesară în mai multe situații: proiecte multi-sistem ce partajează același sistem de fișiere (calcul paralel, redundanță a serviciilor, acces concurent la o colecție de date), segregare funcțională în cadrul unui serviciu multi-sistem sau pur și simplu disponibilitatea unor fișiere către mai multe sisteme de calcul (server de fișiere). Există mai multe metode prin care o placă Raspberry Pi poate face disponibile fișiere locale prin intermediul rețelei. Lecția de față prezintă două dintre acestea: prin intermediul serverului SSH și prin intermediul serverului SAMBA.
Partajarea de fișiere prin intermediul serviciului Secure Server Shell
Serviciul SSH este gândit pentru a putea accesa de la distanță un sistem Linux la nivel de consolă (linie de comandă). Pe lângă conectarea la consola sistemului serviciul SSH permite și transferul de fișiere prin intermediul componentei SCP (Secure Copy Protocol) – componentă care se află în spatele posibilității de a partaja fișiere în rețea. Această modalitate de partajare este specifică sistemelor Linux, cu alte cuvinte putem partaja fișiere între mai multe plăci Raspberry Pi sau între o placă Raspberry Pi și alte sisteme ce rulează sistemul de operare Linux. Există diverse utilitare ce expun această facilitate altor sisteme de operare dar în cadrul acestei lecții ne vom limita la sistemul de operare Linux.
Pentru mai multe informații legate de funcționarea serviciului SSH se pot vedea și:
Raspberry Pi – Remote Access
https://www.raspberrypi.org/documentation/remote-access/
Adafruit’s Raspberry Pi Lesson 6. Using SSH
https://learn.adafruit.com/adafruits-raspberry-pi-lesson-6-using-ssh/
Sistemul care partajează fișierele în rețea (sistemul server) trebuie să aibă serverul de SSH pornit (pachetul software SSH este instalat implicit în distribuția Rasbpian dar nu pornește în mod automat din motive de securitate):
sudo /etc/init.d/ssh start
Pentru a configura pornirea automată a serviciului la restartarea sistemului putem utilitarul raspi-config sau putem utiliza comanda:
sudo systemctl enable ssh
Pe sistemul care va accesa fișierele în rețea (sistemul client) este nevoie să instalăm pachetul sshfs (SSH File System):
sudo apt-get install sshfs
Pentru a conecta un director la sisteme de fișiere local vom utiliza comenzile:
mkdir director_nou
sshfs user@xxx.xxx.xxx.xxx: director_nou
unde user este utilizatorul de pe sistemul server și xxx.xxx.xxx.xxx adresa de rețea a sistemului server. În directorul nou creat și conectat la sistemul server se va mapa (implicit) directorul home al utilizatorului user. Dacă dorim să mapăm un alt director se va completa comanda (după 🙂 cu calea către acel director dar, atenție, utilizatorul cu care ne conectăm trebuie să aibă drepturile adecvate asupra acelui director.
Pentru a deconecta legătura dintre sisteme se va utiliza comanda:
umount director_nou
În cele prezentate până acum am arătat o modalitate foarte simplă de partajare de fișiere între două sisteme Linux (oricare dintre ele, sau amândouă, putând fi plăci Raspberry Pi). Totuși, pentru a crea un server de fișiere într-o rețea locală, o soluție mult mai robustă este utilizarea serviciului SAMBA – serviciu ce permite partajarea de fișiere și de dispozitive de tip imprimantă cu sisteme ce rulează diverse sisteme de operare (în special Windows). Prin intermediul instalării serviciului SAMBA pe o placă Raspberry Pi putem partaja în rețea dispozitive de stocare de mare capacitate (hard-disk-uri USB de exemplu) obținând astfel dispozitive de stocare de rețea la un preț accesibil – dispozitivele hardware dedicate de acest tip au un cost destul de mare…
Pentu mai multe detalii legate de serviciul SAMBA puteți consulta și:
Samba – Wikipedia
https://en.wikipedia.org/wiki/Samba_(software)
What is Samba?
https://www.samba.org/samba/what_is_samba.html
Partajarea de fișiere prin intermediul serviciului SAMBA
Serverul SAMBA nu este instalat implicit și din acest motiv primul pas este instalarea pachetelor aferente:
sudo apt-get install samba
Dacă dorim să partajăm în rețea unități de stocare ce au fost formatate NTFS (sistem de fișiere specific ultimelor versiuni ale sistemului de operare Windows) este necesar să instalăm suportul pentru acest tip de sistem de fișiere pentru a putea conecta aceste unități la placa Raspberry Pi:
sudo apt-get install ntfs-3g
Pentru a defini partjarea dorită vom edita fișierul /etc/samba/smb.conf și vom adăuga la sfârșit:
[Share]
comment = share
path = /calea/catre/directorul/partajat
writeable = yes
only guest = yes
create mask = 0777
directory mask = 0777
browseable = yes
public = yes
unde share va fi numele sub care vom vedea partajarea și /calea/catre/directorul/partajat este calea completa a directorului ce urmează a fi partajat (poate fi calea către locul unde am montat drive-ul USB). Salvăm și pornim serverul SAMBA:
sudo /etc/init.d/samba start
Dacă dorim pornirea automată a serverului la repornirea sistemului:
sudo systemctl enable samba
De pe un sistem de calcul ce rulează Windows, din aceiași rețea locală ca și sistemul Raspberry Pi, vom vedea imediat în Network sistemul Raspberry Pi și vom putea utiliza fișierele partajate. Configurația precedentă permite accesul la fișierele partajate fără nici un fel de autentificare (utilizator/parolă).
În cazul în care dorim să partajăm anumite directoare în mod restricționat trebuie să parcurgem următorii pași:
Creăm un grup de utilizatori smb:
sudo groupadd smb
Adăugăm un utilizator acestui grup (poate să fie utilizatorul implicit pi sau un alt utilizator):
sudo adduser pi smb
Stabilim o parolă pentru accesul în rețea:
sudo smbpasswd -a pi
Edităm fișierul /etc/samba/smb.conf și adăugăm la final:
[Share2]
comment = share2
path = /calea/catre/directorul/partajat
writeable = yes
only guest = no
create mask = 0777
directory mask = 0777
browseable = yes
public = no
Repornim serverul de SAMBA:
sudo /etc/init.d/samba restart
Acest nou director partajat va fi accesibil doar prin introducerea numelui de utilizator și a parolei stabilite.
Configurațiile precedente (prezentate pentru serviciile SSH și SAMBA) au fost testate pe plăci Raspberry Pi rulând Raspbian GNU/Linux 8 (jessie), kernel 4.4.45-v7+, sshfs 2.5-1 și samba 2:4.2.14+dfsg-0+deb8u2.
Pentru mai multe informații despre configurarea serviciului SAMBA pe o placă Raspberry Pi se pot parcurge și următoarele materiale:
Raspberry Pi Bit-Torrent/DLNA/SAMBA Server Part 2: Setting up Samba
http://joerpi.blogspot.ro/2013/06/raspberry-pi-bit-torrentdlnasamba.html
How to Turn a Raspberry Pi into a Low-Power Network Storage Device
http://www.howtogeek.com/139433/how-to-turn-a-raspberry-pi-into-a-low-power-network-storage-device/
How-To: Share a folder with a Windows computer from a Raspberry Pi
http://raspberrypihq.com/how-to-share-a-folder-with-a-windows-computer-from-a-raspberry-pi/