Dziś jest czwartek, 24 lipca 2008 roku (z kalendarza...)

Udostępnianie plików

Icon

14.05.2008, 11:20

Arch Linux

Komentarze (1)

Powrót

Nawiązywania współpracy między komputerami ciąg dalszy. Poprzednio krótko przedstawiłem program Unison służący do synchronizacji plików (artykuł na jego temat jest już w trakcie tworzenia), zaś dziś przyjdzie kolej na zagadnienie udostępniania plików z jednej maszyny na inną. W Windowsach nie stanowi to kłopotu, natomiast pod Linuksem musimy sami zadbać o zbudowanie infrastruktury. Nie jest to jednak trudne. Tak więc zaczynamy.

Protokoły SMB i CIFS

SMB to protokół udostępniania zasobów jednego komputera innemu. Został opracowany w latach 80. przez IBM, lecz w późniejszych latach jego dalszym rozwojem zajął się Microsoft, który uczynił go podstawą udostępniania plików i drukarek w swoich systemach Windows. Począwszy od wersji 3.11 każda wersja systemu zawiera jego implementację. CIFS to nowa wersja SMB stworzona przez Microsoft oraz kilka innych firm - jej implementacja znajduje się w najnowszych wersjach Windowsa.

SMB jest protokołem typu klient-serwer. Komputer kliencki generuje zapytania do serwera i otrzymuje od niego odpowiedzi. Jednak praktycznie wszystkie implementacje dysponują oboma zestawami funkcji, przez co maszyna może korzystać z zasobów udostępnionych przez innych, jak i sama coś udostępniać. Jest to przydatne szczególnie w małych sieciach domowych, gdzie nie ma możliwości/potrzeby uruchomienia centralnego serwera. Z drugiej strony, jego zbudowanie nie jest takie trudne; korzystamy tam z tych samych narzędzi, co w przypadku zwykłych komputerów.

Jak to wszystko działa?

Pierwsza rzecz, którą muszą zrobić komputery, to odnaleźć się w sieci. Używany jest do tego protokół NetBIOS pracujący na portach 137, 138 i 139. Może być to wykonane albo poprzez emisję (mówiąc obrazowo, komputer wysyła w sieć głośno informację "ej, tu jestem i nazywam się XXX!!!" :)) lub poprzez serwer centralny WINS (Windows Internet Name Service). Metoda 1 jest dobra dla sieci bez serwera centralnego, lecz na dłuższą metę trochę niewydajna. Druga wymaga obecności dodatkowej maszyny. Microsoft wprowadził ostatecznie cztery metody rozpoznawania nazw:

  1. Węzeł-B - emisja (wersja zmodyfikowana wcześniej sprawdza lokalny bufor tymczasowy LMHOSTS).
  2. Węzeł-P - korzystanie z serwera WINS. Jeśli go nie ma, rozpoznawanie nie działa.
  3. Węzeł-M - najpierw emisja, a później WINS
  4. Węzeł-H - najpierw WINS, później emisja.

Komputery w sieci mogą być zorganizowane w grupy robocze, które są niczym innym, jak takim folderem ułatwiającym organizację i odnajdywanie konkretnych zasobów. Znacznie bardziej zaawansowanym rozwiązaniem są domeny, udostępniające możliwość zdalnego logowania się oraz centralne mechanizmy zabezpieczeń. Są one jednak trudniejsze do skonfigurowania oraz wymagają obecności centralnego serwera. Tym się nie będziemy tutaj zajmować.

Windows

W Windowsie sprawa jest prosta, ponieważ protokół SMB, jak prawie wszystko w tym systemie, jest wbudowany w jądro :). Wchodzimy w Panel sterowania -> System, wpisujemy nazwę komputera i grupy roboczej, po czym wszystko restartujemy. Jeśli nie widzimy innych komputerów w sieci, a one nie widzą nas, winę za to ponosi zainstalowany na maszynie firewall. Musisz odblokować w nim porty 137, 138, 139 oraz być może 445 dla transmisji w sieci lokalnej (z/do adresów IP 192.168.1.x czy co tam masz). Upewnij się, że odpowiednia reguła znajduje się PRZED regułą blokującą nieznane pakiety - inaczej i tak zostaną one odrzucone :).

Linux

Instalujemy pakiet Samba będący uniksową implementacją protokołu SMB, co ciekawe - działającą dwukrotnie wydajniej, niż kod Microsoftu :). W Arch Linuksie to kwestia ściągnięcia jednego pakietu:

 
# pacman -S samba

W katalogu /etc/samba/ odnajdujemy plik smb.conf.default i zmieniamy go na smb.conf. Otwieramy go do edycji, kasujemy wszystko i wklejamy rzecz następującą:

# tutaj nazwa grupy roboczej
workgroup = GRUPA_ROBOCZA
 
# nazwa naszej maszyny (max. 16 znaków)
netbios name = NAZWA_KOMPA
 
# tutaj strzelamy opis
server string = Opis
 
# poziom bezpieczeństwa - zgodnie z dokumentacją
# na jego podstawie Samba decyduje, czym będzie.
# My nie mamy ani domen, ani serwera domen, więc
# jedynym sensownym wyborem jest "share".
 
security = share
 
# yes, jeśli chcemy udostępniać drukarki
load printers = no
 
# włącz szyfrowanie haseł
encrypt passwords = yes

Kasujemy wszystko, co jest po wielkim nagłówku Share definitions - tutaj określimy, co chcemy udostępniać, więc domyślne propozycje nam nie są potrzebne. Pokażę teraz, jak udostępnić dwa katalogi tylko do odczytu - jeden dostępny dla wszystkich, drugi jedynie po wpisaniu hasła:

[bazar]
   path = /sciezka/bazar
   browseable = yes
   read only = yes
   guest ok = yes
 
[twierdza]
   path = /sciezka/twierdza
   browseable = yes
   read only = yes
   guest ok = no
   valid users = zyx

Oto omówienie poszczególnych opcji:

  1. path - ścieżka do zasobu
  2. browseable - czy katalog jest widoczny dla innych komputerów (opcja "no" daje podobny efekt, jak "Moje dokumenty" w Windowsie).
  3. read only - czy dajemy dostęp tylko do odczytu (Samba ustawia takowy domyślnie, ale dla potwierdzenia i pokazania, że taka dyrektywa istnieje, dodałem ją i tu).
  4. guest ok - zezwól na dostęp jako gość
  5. valid users - tylko ci użytkownicy będą mieć dostęp do zasobów. Uwaga: choć wybraliśmy autoryzację na poziomie zasobu (pojedyncze hasło), w Sambie odbywa się to poprzez jakiegoś użytkownika.
Opcji jest trochę więcej, ale na podstawowe potrzeby to wystarczy. Skoro korzystamy w konfiguracji z jakiegoś użytkownika, musimy go jeszcze dodać do Samby. Najpierw ją uruchamiamy, a później wydajemy polecenie smbpasswd -a zyx:

# /etc/rc.d/samba start
# smbpasswd -a zyx

Zostaniemy poproszeni o hasło dla niego (może być inne, niż systemowe) i na tym nasza robota się kończy. Tak samo, jak w Windowsie, musimy upewnić się, że iptables ma odblokowane odpowiednie porty. Całą czynność powtarzamy na drugim komputerze, jeżeli tam też rezyduje (Arch) Linux :).

Gdybyś chciał zwiększyć nieco wydajność Samby, dodaj do sekcji global następujący wpis:

socket options = TCP_NODELAY

Graficzne nakładki

Środowisko KDE już od jakiegoś czasu wyposażone jest w KSambaPlugin umożliwiający konfigurowanie Samby za pomocą prostego, graficznego interfejsu użytkownika oraz udostępnianie plików paroma kliknięciami, podobnie jak w Windowsie. Jednak nie wiem, czy w standardowych paczkach KDE się takie coś znajduje, ponieważ korzystam z KDEmoda, a tam nic z "samba" w nazwie nie występuje. Zresztą, i tak taki plugin jest średnio zgodny z filozofią Arch Linuksa (co najwyżej to udostępnianie katalogów by się przydało), lecz nie jest to aż tak duży problem. Samba skanuje plik konfiguracyjny co 60 sekund, tak więc restart możemy robić tylko wtedy, gdy nie chce nam się tyle czekać. W przeciwieństwie do Windowsa, nie musimy resetować całego systemu, żeby np. zmienić nazwę domeny :). Co więcej, o ile inni użytkownicy aktualnie nie ściągają jakiegoś pliku, taki restart będzie dla nich niezauważalny.

Zakończenie

Trochę może dziwić, że udostępnianie plików między systemami linuksowymi robione jest przy użyciu technologii windowsowych. Ma to jednak swoje niezaprzeczalne zalety. Rzadko się zdarza, aby Linuksy były jedynymi systemami w całej sieci, a dzięki temu możemy współdzielić pliki niezależnie od systemu. Linux zresztą nie ma jakichś ciekawych mechanizmów do takich operacji. Owszem, powstawały tam różne projekciki, lecz opierały się one przeważnie na protokołach pokroju FTP oraz nie miały zbyt dużego wsparcia. Chociaż SMB rozwijany jest głównie przez Microsoft, sprawdza się równie dobrze w świecie Uniksów dzięki świetnej ekipie projektu Samba. Projekt ten ostatnio otrzymał zastrzyk energii dzięki udostępnieniu głównym projektantom przez Microsoft pełnej dokumentacji protokołu SMB bez żadnych roszczeń w stosunku do napisanego na jej podstawie kodu. Wprawdzie wymusiła to Komisja Europejska, a nie zarząd firmy, jednak liczy się efekt :). Osobom bardziej zainteresowanym Sambą polecam szereg materiałów opracowanych przez administratorów sieci komputerowej "Zatorze" z Olsztyna (banita.pl) - adres do nich umieściłem w przypisach.

Powrót

Komentarze

Napisał GiM w środę, 28 maja 2008 o 11:55

Buu, skoro już o udostepnianiu plików, to myślałem, że znajdzie się coś o NFSie i innych protokołach sieciowych, a nie o sambie, która jest marną imitacją i ma koszmarne narzuty ;/

Strona 1 z 1 :: 1

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2008 | Wykonanych zapytań: 2 | Serwer wirtualny zapewnia