W jednym z poprzednich wpisów zostały omówione sposoby na montowanie dysków (USB i sieciowych) do Raspberry Pi. Dziś częściowo wykorzystamy te wiadomości, ale pójdziemy w druga stronę – czyli udostępnimy dyski podpięte do Raspberry Pi innym komputerom w naszej sieci LAN.

SAMBA

Z racji tego, że z dysków będą (też) korzystały komputery z systemem Windows skorzystamy z serwera plików (i drukarek) Samba.

Zaczynamy od instalacji potrzebnych pakietów:

sudo apt-get install samba samba-common-bin -y

Można jeszcze zainstalować – zwłaszcza w przypadku problemów z dostępem do zasobów:

sudo apt-get install cifs-utils

raspberry-pi_samba_01

Dyski

Teraz warto wybrać dysk, który chcemy udostępnić – listę dysków możemy sprawdzić za pomocą polecenia:

df -h

raspberry-pi_samba_02

Na potrzeby tego wpisu będzie to:

/dev/sda1 ... /media/usb1

Konfiguracja podstawowa

Wprawdzie możliwości konfiguracji i ustawień jest całkiem sporo, ale przedstawię tylko kilka elementów od których moim zdaniem warto zacząć.

Otwieramy plik konfiguracyjny:

sudo nano /etc/samba/smb.conf

i szukamy:

[global]
workgroup = nazwa_grupy_roboczej

Można aktywować (odkomentować), jeśli korzystamy, można też zostawić tak, jak jest.

Sporo niżej szukamy fragmentu:

####### Authentication #######
#security = user

i zmieniamy na:

####### Authentication #######
security = user

Ta mała zmiana spowoduje to, że konto, które może korzystać z Samby (zasobów, poza tymi dostępnymi dla wszystkich), musi istnieć też na Raspberry Pi jako konto użytkownika.

Kolejna zmiana spowoduje, że będziemy mogli również zapisywać w swoim domowym katalogu, do którego (domyślne ustawienie) będziemy mieli zdalny dostęp po uwierzytelnieniu:

[home]
read only = no

 

raspberry-pi_samba_05a

Polskie znaki

Zapewne przydadzą się Wam również „polskie znaki”  w nazwach plików – w tym celu należy w pliku konfiguracyjnym Samby:

sudo nano /etc/samba/smb.conf

w sekcji:

[global]

dodać:

# PL znaki w SMB
display charset = ISO08859-2
unix charset = ISO8859-2
dos charset = 852

Teoretycznie zamiast „ISO08859-2” można dać „utf-8” – ale akurat u mnie (Windows 7 + Raspbian) nie zadziałało takie ustawienie.

Zasoby do udostępnienia

Na końcu pliku konfigurujemy zasoby, które chcemy móc udostępnić, w tym celu przygotowałem kilka przykładów.

Katalog dostępny dla użytkownika „patryk” (wynika to z uprawnień w samym systemie, więc nie trzeba nic dodatkowo ograniczać), znajdujący się w jego katalogu domowym na Pi, możliwość odczytu i zapisu:

[patryk_share]
comment = Prywatny
path = /home/patryk/share
read only = no

Dysk USB1 (/media/usb1) udostępniony jako publiczny, widoczny (usb1_public, tylko do odczytu) dla wszystkich:

[usb1_public]
comment = Dysk USB1, dla wszystkich do odczytu
path = /media/usb1
guest ok = yes
read only = yes

Dysk udostępniony dla z autoryzowanych użytkowników (o tym niżej), z możliwością zapisu i odczytu:

[usb1]
comment = Dysk USB01
path = /media/usb1
read only = no
create mask = 0777
directory mask = 0777
browseable = yes

raspberry-pi_samba_05b

I na koniec mała kompilacja wszystkiego w jednym wpisie, czyli odczytać może każdy, ale zapisywać może tylko użytkownik „patryk” oraz członkowie grupy „rpl”:

[usb1]
comment = Dysk USB01
path = /media/usb1
read only = yes
guest ok = yes
# read list = uzytkownik, @grupa
write list = patryk, @rpl
create mask = 0777
directory mask = 0777
browseable = yes

Uprawnienia

Należy pamiętać, że oprócz konfiguracji dostępu w samej Sambie istotne są też uprawnienia danego użytkownika (lub grupy) do odczytu/zapisu plików na udostępnionych zasobach – na takich samych zasadach jak ma to miejsce lokalnie.

O montowaniu dysków już pisałem, tam również podałem ten przykład, ale domyślam się, że może się przydać – więc będzie mała powtórka, dopasowana do kontekstu.

Domyślnie „zwykli użytkownicy” nie mogą zapisywać na dyskach zamontowanych np. do katalogu /media (tu: /media/usb1), mogą tylko „konsumować treści”.

I o ile udostępnianiu dysków „do odczytu” nie ma raczej problemów, to z zapisem już mogą się pojawić problemy…

Jednym ze sposobów obejścia tego problemu jest lekka modyfikacja komendy, która służy do montowania dysków, poprzez dodanie:

-o umask=0

Czyli np.:

sudo mount -t auto -o umask=0 /dev/sda1 /media/usb1

raspberry-pi_samba_04

A dla pliku „fstab” będzie to np. taki wpis:

/dev/sda1 /media/usb1 auto defaults,umask=0 00

W tym momencie każdy użytkownik Raspberry Pi będzie mógł modyfikować znajdujące się tam plik, dotyczy to również dostępu poprzez sieć – będą decydowały ustawienia uprawnień w Sambie (patrz wyżej).

Polecenie/komenda/parametr „umask” w tej formie zadziała „tylko” dla dysków z systemem plików FAT/FAT32/NTFS.

Nie zadziała dla ext2/3/4. W tym wypadku należy skorzystać (również) np. z polecenia „chmod”, np.:

sudo chmod 777 -R /media/usb1
sudo chmod 775 -R /media/usb1

Użytkownicy

Pora dodać użytkowników, a że podczas konfiguracji wybraliśmy, by pokrywali się z tymi istniejącymi również w systemie – musimy o tym pamiętać podając nazwy użytkowników podczas tworzenia:

sudo smbpasswd -a patryk
sudo smbpasswd -a pi
sudo smbpasswd -a kolejny_użytkownik

Dla każdego użytkownika będziemy musieli podać hasło, może być takie jak w systemie, może być inne.

A skoro użytkownik Samby musi się pokrywać z użytkownikiem w systemie, to może być potrzeba dodania odpowiedniego użytkownika. Może się jednak zdarzyć, że poza dostępem do zasobów udostępnianych w ramach serwera Samby, taki użytkownik nie powinien mieć innych dostępów. W takim przypadku można stworzyć tzw. użytkownika systemowego, za pomocą polecenia:

sudo useradd -r nazwa_użytkownika

Nie zostanie utworzony katalog domowy, do tego taki użytkownik nie będzie mógł zalogować się do systemu.

Inne przydatne komendy związane z użytkownikami, to:

Kasowanie:

sudo smbpasswd -x użytkownik

Włączenie konta:

sudo smbpasswd -e użytkownik

Wyłączenie konta:

sudo smbpasswd -d użytkownik

Zmiana hasła:

sudo smbpasswd użytkownik

Obsługa serwera

Na koniec jeszcze tylko kilka komend związanych z obsługą serwera:

Restart:

sudo /etc/init.d/samba restart

Uruchomienie:

sudo /etc/init.d/samba start

Zatrzymanie:

sudo /etc/init.d/samba stop

raspberry-pi_samba_03

W nowych wersjach Debiana (np. 11) powyższe polecenia wyglądają trochę inaczej:

sudo systemctl restart smbd.service
sudo systemctl start smbd.service
sudo systemctl stop smbd.service

Konfiguracja:

sudo nano /etc/samba/smb.conf

Podgląd ustawień:

sudo testparm -s

Łączymy się…

By uzyskać dostęp do udostępnionych zasobów, wystarczy połączyć się z serwerem podając jego IP (i np. nazwę konkretnego zasobu – znajduje się w nawiasach kwadratowych w pliku smb.conf) i jeśli jest taka potrzeba – nazwę użytkownika i hasło.

Załóżmy, że chcemy w systemie Windows 7 zamontować udostępniony zasób „usb1” jako użytkownik „patryk” (zgodnie z przykładami powyżej), w tym celu np. w oknie „Komputer” wybieramy „Mapuj dysk sieciowy”:

raspberry-pi_samba_06a

Wybieramy literę, pod jaką ma być widoczny (np. Z:), oraz podajemy adres serwera (Raspberry Pi) lub jak na tym przykładzie – nazwę hosta i nazwę zasobu, do którego chcemy uzyskać dostęp:

\\raspberrypi\usb1

Należy jeszcze zaznaczyć (może nie zawsze trzeba, ale…):

Połącz przy użyciu innych poświadczeń

I jeśli chcemy z dysku korzystać częściej, można zaznaczyć również:

Połącz ponownie przy logowaniu

raspberry-pi_samba_06b

W następnym kroku należy podać nazwę użytkownika i hasło, i jeśli wszystko skonfigurowaliśmy (i wpisaliśmy) poprawnie na liście dysków powinien pojawić się nowy dysk, prosto z Raspberry Pi:

.raspberry-pi_samba_06c

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk