OpenWrt - Samba
Udostępnianie zasobów dyskowych w sieci lokalnej
Ostatnia zmiana: 2013-02-20 17:35

1. Samba
 1.1. Instalacja
 1.2. Konfiguracja
 1.3. Nowy użytkownik
 1.4. Polskie znaki
 1.5. Uruchomienie
2. Wolne miejsce na dysku (opcjonalnie)
3. Uwagi dla użytkowników Windows Vista i 7 (opcjonalnie)
4. Zakończenie


Samba jest programem umożliwiającym dzielenie się zasobami dyskowymi (m.in.) w sieci lokalnej - czyli popularne "Otoczenie sieciowe" w systemach Windows. Współdzielić można dowolny katalog widoczny w systemie, nie jest więc konieczne posiadanie nośnika USB.
Poniższe rozwiązanie jest sprawdzone dla OpenWrt Attitude Adjustment.

Założenie - w systemie jest katalog który chcemy udostępnić - czy to katalog systemowy, czy podmontowany dysk. W tym przykładzie będzie udostępniony katalog /mnt/sda1. System plików na nośniku (ext2/ext3/vfat/ntfs) nie ma znaczenia, byle by ten katalog był dostępny normalnie dla rutera. Komputery podłączone do samby nie widzą systemu plików dysku tylko sieciowy system plików!
Samba
W OpenWrt Attitude Adjustment występuje samba w wersji 3.6.5 (w chwili pisana tego opisu). Jest to jedna z najnowszych wersji tego pakietu, ale na potrzeby OpenWrt została ona pozbawiona niektórych elementów (kerberos, Active Directory, printserwer) i została ograniczona tylko do mechanizmów udostępniania plików.
Instalacja

    # opkg update
    # opkg install samba36-server

Konfiguracja
Odbywa się poprzez edycję pliku /etc/config/samba. Poniżej zaprezentowano konfigurację udostępniającą dwa katalogi: jeden ogólnodostępny o nazwie publiczny udostępniający dane z katalogu /mnt/sda1/publiczny, drugi wymagający podania loginu i hasła (użytkownik malgosia w tym przykładzie) udostępniający katalog /mnt/sda1/prywatny pod nazwą prywatny.

    config samba
        option name openwrt
        option workgroup WORKGROUP
        option description 'OpenWrt serwer'
        option charset 'UTF-8'
        option 'homes' '0'

    config sambashare
        option name publiczny
        option path /mnt/sda1/publiczny
        option read_only no
        option create_mask 0700
        option dir_mask 0700
        option guest_ok yes
        
    config sambashare
        option name prywatny
        option path /mnt/sda1/prywatny
        option read_only no
        option create_mask 0700
        option dir_mask 0700
        option guest_ok no
        option users malgosia

UWAGA: opcje create_mask/dir_mask nie są uprawnieniami udostępnionych plików! Dotyczą one nowo tworzonych plików i katalogów.
Katalogi /mnt/sda1/publiczny i /mnt/sda1/prywatny muszą istnieć w systemie. Użytkownik (w tym przypadku malgosia) musi mieć prawa zapisu/odczytu do danego katalogu, więc należy je ustawić np. przez:

    # chmod 777 /mnt/sda1
    # chmod 777 /mnt/sda1/publiczny
    # chmod 777 /mnt/sda1/prywatny

Nowy użytkownik
Proces zakładania nowego użytkownika opisane jest w osobnym dokumencie. Dodatkowo należy utworzyć hasło tego użytkownika dla zasobów samby korzystając z innego programu: smbpasswd. Podsumowując: aby utworzyć użytkownika o nazwie malgosia należy wykonać to następującym poleceniami:

    # echo "malgosia:*:1000:65534:malgosia:/tmp:/bin/false" >> /etc/passwd
    # echo "malgosia:*:0:0:99999:7:::" >> /etc/shadow
    # touch /etc/samba/smbpasswd
    # smbpasswd -a malgosia

UWAGA: Domyślna konfiguracja samby uniemożliwia zalogowanie się jako użytkownik root więc nie będzie działać udostępnianie zasobów logując się jako ten użytkownik. Trzeba zrobić nowego.
Nazwę użytkownika (malgosia) i hasło należy oczywiście zmienić stosownie do wymagań; jeżeli mamy kilku użytkowników należy liczbę 1000 zwiększać kolejno tak, aby przy każdym była unikalna wartość. Jeżeli podajemy inny numer grupy, należy także pamiętać o jej utworzeniu.
UWAGA2: użytkownik malgosia musi mieć prawo odczytu (i ew zapisu) do zasobu na dysku (/hdd/prywatny w tym przypadku). Należy się więc posłużyć poleceniem wspomnianym już poleceniem chmod

    # chmod 777 /mnt/sda1/prywatny

Nie wszystkie systemy plików umożliwiają przydzielanie uprawnień pod OpenWrt (fat/ntfs) więc trzeba je odpowiednio wcześniej zamontować, aby ten użytkownik miał odpowiednie prawa (patrz dokument o nośnikach).
Polskie znaki
Wspomniana konfiguracja obsługuje już polskie znaki. Może być koniecznie odpowiednie zamontowanie nośnika, np. w przypadku stosowania nośnika z fat musi on być zamontowany z opcją utf8, czyli np.:

    # mount -t vfat -o utf8 /dev/sda1 /mnt/sda1

(patrz dokument o nośnikach)
Uruchomienie
Zostaje tylko włączenie samby

    # /etc/init.d/samba enable
    # /etc/init.d/samba start

Odpowiednie montowanie zasobów można też wyklikać korzystając z gui LuCI (po instalacji pakietu luci-app-samba).
Wolne miejsce na dysku (opcjonalnie)
W przypadku systemów Windows samba może niewłaściwie podawać ilość wolnego miejsca (podaje ilość wolnego flash a nie extroota). Rozwiązanie problemu: http://eko.one.pl/forum/viewtopic.php?pid=19831 .
Uwagi dla użytkowników Windows Vista i 7 (opcjonalnie)
W starszych wersjach samby, Windows Vista może mieć problem z dostaniem się do tak przygotowanych zasobów. Wynikało to ze starej wersji samby która nie obsługuje uwierzytelniania NTLMv2, które z kolei jest domyślnym i jednym w Vista. Nowsza nie powinna mieć tego problemu. Jeżeli jednak coś takiego wystąpi, należy to zmienić:

Windows Vista Business, Ultimate
- uruchom secpol.msc
- wybierz "Local Policies > Security Options"
- otwórz "Network security: LAN Manager authentication level"
- zaznacz "Send LM & NTLM - use NTLMv2 security if negotiated" zamiast "Send NTLMv2 response only"

Windows Vista Home, Premium
- uruchom regedit
- znajdź klucz "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\"
- ustaw "LMCompatibilityLevel" na "1" co oznacza "używaj NTLMv2 jeżeli jest dostępne lub starszej wersji jeżeli nie"
Patrz także: forum eko.one.pl
Zakończenie
Jeżeli nastąpi zmiana w loginie/haśle na sambie, trzeba zresetować pamięć haseł w Windows (XP, Vista) - w przeciwnym wypadku można otrzymać komunikat "Nie dostępny" lub podobne. Aby zresetować pamięć haseł należy wykonać polecenie "net use * /del /yes"

Samba jest wygodnym (w przypadku Windowsa) sposobem wymiany plików pomiędzy urządzeniami. Jednakże jest bardzo słabo wydajna (dla przypomnienia - procesory stosowane w tanich ruterach mają częstotliwość procesora ok 200MHz!) i może to być wąskim gardłem. Szybszym rozwiązaniem jest użycie ftp.