| Siec TCP/IP || Otoczenie Sieciowe || Poczta || Usnet || FTP || Konto Shellowe || Czat || IRC || Serwer PROXY |

Otoczenie sieciowe - Sieć SMB

utworzono: 24/06/2002 :: modyfikacja: 01/05/2008
autor: Marcin Moczkowski :: glappo (at) banita (dot) pl

Udostępnianie Plików i Drukarek - Samba/Unix

W systemach opartych na pakiecie Samba są do wyboru dwie podstawowe metody kontroli dostępu. Kontrola dostępu na poziomie zasobów czyli coś znanego z Windows 95/98/Me oraz kontrola dostępu na poziomie użytkownika czyli w stylu Windows 2000/XP. Pierwsza metoda nie jest "naturalna" dla samby gdyż działa ona w środowisku Unix, gdzie wszystko musi mieć przypisanego użytkownika. Dlatego właściwie i tutaj korzystamy z użytkowników tyle że w specyficzny sposób. Zaletą  udostępniania na poziomie zasobów jest to że łatwiej jest stworzyć udział z dostępem dla wszystkich czyli gościny. Domyślnym sposobem udostępniania jest kontrola dostępu na poziomie użytkownika, do której możemy właściwie zaliczyć też kontrole na poziomie domeny NT oraz serwera haseł opisaną tutaj. Całą konfiguracje Samby przeprowadzasz z poziomu administratora czyli jako root.

Przygotowanie systemu

  • Przygotowanie systemu sprowadza się do zainstalowania pakietu Samba czyli zrób to najlepiej teraz.
  • Nadepnie przejdź do pliku konfiguracyjnego Samby (zazwyczaj /etc/samba/smb.conf) i wypełnij w nim sekcje [global]. W tej sekcji definiujesz m.in. nazwę komputera, grupę roboczą, opcje sieciowe, sposób kontroli dostęp i różne opcje zabezpieczeń
  • Praktycznie większość tych opcji ma jakieś ustawienia domyślne wiec gdy ich nie zadeklarujesz to będą z takimi działać.  Możesz dopasować je do swoich potrzeb, przykładowy wpis powinien wyglądać tak:
    [global]
    netbios name = nazwa_kompa
    server string = kometarz
    workgroup = WARIACI
  • Czyli co tyczy objaśnień, "netbios name" to nazwa komputera, "server string" to komentarz lub jak to woli opis komputera, "workgroup" to grupa robocza
  • Jeśli zamierzamy udostępniać na zasoby dla wybranych użytkowników czyli na hasło warto zadeklarować kodowanie haseł oraz położenie pliku z haseł. Dodajemy wiec do powyższego następujące wpisy:
    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd
  • Warto wiedzieć też jak się dodaje użytkowników do Samby czyli jak się tworzy konta SMB. Najpierw musisz stworzyć użytkownika w systemie, a potem "przenieść" go do Samby nadając mu hasło czyli:
    adduser jarek
    smbpasswd -a
    jarek
  • Oczywiście wpisujesz swoje dane z prawej strony znaku równości i uruchamiasz Sambę, bez żadnych restartów systemu ;-)
    /etc/init.d/smb start

na gorę

Udostępnianie - zabezpieczenia na poziomie udziału

  • Ta metoda udostępniania powstała w Samba/Unix dlatego, gdyż kiedyś była ona jedyną dostępną. Udostępnianie z kontrolą dostępu na poziomie udziałów nie jest zalecane i praktycznie nie jest już rozwijane, więc nie zaleca się stosowania tego.  Wybór należy oczywiście do ciebie i dlatego jest ten opis.

  • Do powyższego wpisu dodajesz tylko deklaracje kontroli dostępu na poziomie udziału (ostatni wpis), czyli całość powinna wyglądać tak:
    [global]
    netbios name = nazwa_kompa
    server string = kometarz
    workgroup = WARIACI
    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd
    security = share

  • Teraz pozostało nam cos udostępnić czyli deklarujemy udział, następującym wpisem do smb.conf:
    [dane]
    path = /home/katalog
    guest ok = yes

  • Udział ten będzie widoczny jako "dane" i będzie udostępniał katalog tylko do odczytu podany poprzez zmienną "path". Do tego katalogu będzie możliwy dostęp gościnny, tylko pamiętaj żeby prawa w lokalnym systemie plików nie zabraniały tego.

  • Możemy tez udostępnić katalog z możliwością zapisu:
    [dane]
    path = /home/katalog
    guest ok = yes
    write ok = yes

  • Żeby udostępnić coś na hasło musisz zadeklarować użytkownika, który mam ten przywilej, mimo że jest to kontrola dostępu na poziomie zasobów. 

  • Poniższe wpisy pozwalają na dostęp tylko do odczytu dla wybranych użytkowników, reszta nie może wejść wcale.
    [dane]
    path = /home/katalog
    guest ok = no
    valid users = jarek andrzej

  • Teraz przykład pokazujący dostęp dla wszystkich użytkowników tylko do odczytu i dla wybranych z możliwością zapisu
    [dane]
    path = /home/katalog
    guest ok = yes
    write list = jarek andrzej

  • Samba sprawdza plik konfiguracyjny co 60 sekund i wprowadza ewentualne zmiany jeśli takowe są, wiec nie potrzeba jej restartować, no chyba że chcesz mieć efekt natychmiast.

na gorę

Udostępnianie - zabezpieczenia na poziomie użytkownika

  • Do powyższego wpisu dodajesz tylko deklaracje kontroli dostępu na poziomie użytkownika (user), czyli całość powinna wyglądać tak:
    [global]
    netbios name = nazwa_kompa
    server string = kometarz
    workgroup = WARIACI
    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd
    security = user
    map to guest = Bad User

  • Ostatni wpis ("map to guest = Bad User") umożliwia bezproblemowy dostęp gościny do udziałów jeśli sobie tego w nich zażyczymy, wiec warto go mieć.

  • Teraz pozostało nam cos udostępnić czyli deklarujemy udział, następującym wpisem do smb.conf:
    [dane]
    path = /home/katalog
    guest ok = yes

  • Udział ten będzie widoczny jako "dane" i będzie udostępniał katalog tylko do odczytu podany poprzez zmienną "path". Do tego katalogu będzie możliwy dostęp gościnny, tylko pamiętaj żeby prawa w lokalnym systemie plików nie zabraniały tego.

  • Możemy tez udostępnić katalog z możliwością zapisu:
    [dane]
    path = /home/katalog
    guest ok = yes
    write ok = yes

  • Żeby udostępnić coś na hasło musisz zadeklarować użytkownika, który mam ten przywilej, mimo że jest to kontrola dostępu na poziomie zasobów. 

  • Poniższe wpisy pozwalają na dostęp tylko do odczytu dla wybranych użytkowników, reszta nie może wejść wcale.
    [dane]
    path = /home/katalog
    guest ok = no
    valid users = jarek andrzej

  • Teraz przykład pokazujący dostęp dla wszystkich użytkowników tylko do odczytu i dla wybranych z możliwością zapisu
    [dane]
    path = /home/katalog
    guest ok = yes
    write list = jarek andrzej

  • Samba sprawdza plik konfiguracyjny co 60 sekund i wprowadza ewentualne zmiany jeśli takowe są, wiec nie potrzeba jej restartować, no chyba że chcesz mieć efekt natychmiast.

na gorę

Udostępnianie katalogów domowych użytkowników

Na serwerach udostępniających dane dla wielu użytkowników bardzo przydatną rzeczą jest możliwość zdefiniowania prywatnych udostępnień dla każdego użytkownika poprzez udostępnienie ich katalogów domowych. Oczywiście możesz owe katalogi udostępniać możesz każdy katalog domowy użytkowników udostępniać oddzielnie ale przy większej ilości zaczyna być to karkołomne zajęcie. Na szczęście katalogi domowe użytkowników można udostępnić za pomocą jednej sekcji w smb.conf w bardzo prosty sposób jak pokazano poniżej:
[homes]
comment = Katalog Domowy
browseable = no
write ok = yes

valid users = %S
<< deklaracja udziału katalogów domowych
<< komentarz udziału
<< zasób standardowo niewidoczny
<< umożliwienie zapisu w udziale
<< zezwolenie tylko na zaglądanie tylko do swoich rzeczy

Powyżej na czerwono zostały zaznaczone opcje niezbędne do udostępnienia katalogów domowych użytkowników z możliwością zapisu. Warto dodać opcje " valid users = %S" (może być też zamiast tego opcja " users = %S") dzięki której nie trafi się sytuacja że użytkownicy będą mieli dostęp do katalogów domowych innych użytkowników. Dodatkowo trzeba mieć na uwadze że sekcja [homes] może nam udostępnić katalog domowy dowolnego użytkownika w tym root  i typowo systemowych jak bin, sys, uucp. Żeby temu zapobiec zalecane jest użycie opcji "invalid users", gdzie należy dodać szczególnie użytkowników systemowych juz na poziomie globalnym czyli w sekcji [global].

UWAGA: Udostępnianie katalogów domowych czyli tworzenie sekcji [homes] nie jest zalecane przy zabezpieczeniach Samby na poziomie udziału (security = share ), gdyż może to skutkować różnymi niespodziankami.

Jeśli używasz dystrybucji Linuksa wspierającą SELinux, np. Fedora Core, sprawdź czy ustawienia polityki bezpieczeństwa pozwolą udostępnić katalogi zawarte w /home. Możesz o tym poczytać w dziale SELinux na stronie Firewall czyli ściana ogniowa - opis dla Linux.

na gorę

Domyślne udostępnienie

Bardzo ciekawą i przydatną możliwością jest ustawienia domyślnego udziału na serwerze Samby. Domyślny udział służy jako "przystań dla zagubionych dusz" czyli jak jakiś użytkownik będzie próbował się połączyć z nieistniejącym udziałem zostanie automatycznie przerzucony do domyślnego udziału. w takim udziale najlepiej jest np. udostępnić pliki pomocy żeby zagubiony użytkownik wiedział czemu tam trafił i co ma począć. Szczególnie się to przydaje przy zmianach struktury udostępnień na serwerze Samby. Definiowanie domyślnego udziału sprowadza się do paru wpisów w smb.conf jak pokazano poniżej:
[global]
default service = pomoc
[pomoc]
path = /jakiś/katalog
guest ok = yes
<< deklaracja sekcji global
<< nazwa domyślnego udziału, bez nawiasów
<< deklaracja domyślnego udziału
<< ś cieżka do katalogu udziału
<< zezwolenie na wjazd dla gości

Jak pokazano powyżej warto dodać zezwolenie dostępu dla gości w domyślnym udziale gdyż niewiadomo kto nam zbłądzi. Przydatne tez może okazać się użycie zmiennej %S w ścieżce dostępu domyślnego udziału (np. path = /jakiś/katalog/%S) co pozwoli nam bardziej zindywidualizować np. pliki pomocy dla zabłąkanych użytkowników. zauważ że owa zmienna %S odnosi się tutaj do nieistniejącego, żądanego przez użytkownika udziału. Dodatkowo miej na uwadze, że każdy znak "_" w nazwie usługi, użyty w domyślnej będzie mapowany na "/", co może prowadzić do wręcz ciekawych efektów.

na gorę

Spis opcji udostępniania

Pakiet Samba pozwala określić bardzo wiele opcji udostępniania, oto spis najbardziej użytecznych (pełna lista wraz z dokładnym opisem w dokumentacji do smb.conf):

admin users = user (domyślnie nie zdefiniowane) - lista użytkowników mających przywileje administracyjne w udziale czyli prawa root w operacjach na plikach

hosts allow/ hosts deny = 192.168.1.1/nazwa_kompa (domyślnie brak wartości) - lista komputerów (po adresach IP lub nazwach) mających zezwolenie lub nie w dostępnie do usługi

browseable = yes/no (domyślnie yes) - czy udział będzie widziany na liście przeglądania

force user/group = user/grupa (domyślnie nie zdefiniowane - podłączenie jako wymuszony użytkownik/grupa przy dostępnie do udziału

guest ok = yes/no (domyślnie no) - dostęp gościny do usługi

guest only = yes/no (domyślnie no) - wymuszanie podłączenia jako gość w dostępnie do udziału

valid/invalid users = user (domyślnie nie zdefiniowane) - lista użytkowników mających lub nie zezwolenie na logowanie się do danej usługi

max connections = 10 (domyślnie 0 czy brak ograniczeń) - limitowanie liczby maksymalnych połączeń do udostępnienia

read/write list = user/@grupa (domyślnie pusta wartość) - lista użytkowników mających dostęp tylko do odczytu/zapisu w udziale

writable = yes/no (domyślne no) - opcja określająca czy udział jest udostępniony do zapisu 

Opis wszystkich opcji udostępniania i całego pliku smb.conf znajdziesz w swoim systemie poprzez man smb.conf oraz na stronie http://samba.org/samba/docs/man/smb.conf.5.html.

na gorę

Powiązanie Samby 3.0 i CUPS

W Sambie 3.0 domyślnym systemem drukowania jest CUPS (Common UNIX Printing System - www.cups.org). Dodatkowo sama Samba 3.0 została silnie uzależniona od CUPS, od jego obecności w systemie (części bibliotek) jest już uzależniona domyślna sama instalacja tej wersji pakietu. Może to dziwić szczególnie kiedy nie chcemy korzystać z udostępnień drukarek poprzez Sambę.

Dodatkowo polecam zapoznać się lekturą artykułu "CUPS i Samba" znajdującą się pod adresem -http://www.done.homelinux.org/printers/cups.html. Oczywiście jest tam opisane współdziałanie systemu druku CUPS z Sambą w celu udostępniania drukarek w sieci SMB.

Internacjonalizacja Samby czyli polskie znaki

Pakiet Samba pozwala określić obsługę różnych stron kodowych czyli posługiwania się obcymi językami zawierającymi znaki spoza standardowego zakresu ASCII. Dotyczy to też języka polskiego, którego obsługę znaków warto włączyć w Sambie, żeby nam się nie pojawiały krzaczki. Wpierw musisz używać polskich znaczków, po stronie Linuksa założyłem ISO-8859-2, czyli komenda locale musi zwrócić same zmienne równe pl_PL (jak spolszczyć Linuksa, czytaj: http://linux.sky.pl/teksty/popolsku.html). Samba 3.0 domyślnie korzysta z Unicodu czyli kodowania UTF-8 i przez to opcje odpowiedzialne za kodowanie znaków uległy zmianie.

Dla Samby 2.0 i 2.2 polskie znaki (jeśli po stronie Linuksa jest ISO-8859-2) uzyskasz poprzez opcje w sekcji [global]:
character set = ISO8859-2
client code page = 852

Dla Samby 3.0 polskie znaki (jeśli po stronie Linuksa jest ISO-8859-2) uzyskasz poprzez opcje w sekcji [global]:
unix charset = ISO8859-2
dos charset = CP852

Dla Samby 3.0 polskie znaki (jeśli po stronie Linuksa jest UTF-8) uzyskasz poprzez opcje w sekcji [global]:
unix charset = UTF8
display charset = UTF8
dos charset = CP852

A teraz parę słów wyjaśnień. Systemy w otoczeniu sieciowym mogą używać różnych języków "ludzkich" czyli np. polskiego i francuskiego. Jak wiadomo różne języki zawierają różne znaki narodowe tzw. ogonki. Poniżej są opisane dwa przypadki podejścia do problemu "wielojęzyczności".

Epoka stron kodowych  ASCII (Samba 2.0/2.2)

Żeby się w tym połapać i żeby każdy mógł pisać w swoim języku wymyślono strony kodowe rozszerzające zestaw standardowych znaków ASCII (angielskie bez żadnych "ogonków") do stron kodowych dla danych języków (a właściwie regionów). Strona kodowa musi być jasno zadeklarowana przez system który chce jej używać i niestety może używać w danym momencie tylko jednej strony kodowej ASCII. W otoczeniu sieciowym dotyczy to systemów opartych m.in. na DOS, Windows 95/98/Me oraz Samba 2.0/2.2, gdyż te systemy korzystają ze stron kodowych ASCII. Jako że do Samby 2.0/2.2 po sieci mogą się łączyć systemy z innym kodowaniem niż lokalne kodowanie obecne w Unix, należy jej zdefiniować czego się spodziewamy po stronie klientów czyli sieci  (client code page) oraz jakie jest kodowanie w lokalnym Uniksie na którym działa Samba (character set). Zauważ że nie możesz mieć "wielonarodowych" klientów bo powstaną "krzaczki" i to jest wada systemu opartego o ASCII.

Epoka Unicode czyli UTF-8 (Samba 3.0)

Oczywiście dostrzeżono z czasem wadę stron kodowych ASCII i stworzono Unicode czyli coś w stylu jednej strony kodowej dla wszystkich języków w której można zadeklarować wszystkie "ogonki" i tym podobne. Najważniejsza chyba cecha że jest to jeden zestaw znaków zwarty jakby w jednej bazie. W otoczeniu sieciowym Unicode używają systemy oparte m.in. na Windows 2000/XP/2003 oraz Samba 3.0. Dlatego w Sambie 3.0 deklarujesz jakie jest kodowanie w lokalnym Uniksie na którym działa Samba (unix charset i opcjonalnie display charset), ale jakby się napatoczył jej np. jakiś Windows 95/98/Me trzeba i z nim sobie poradzić dlatego zadeklarować kodowanie klienta (dos charset). Jak widać opcje z Samby 3.0 dokładnie odpowiadają tym z Samby 2.0/2.2 ale zostało zmienione ich nazewnictwo żeby bardziej odpowiadało temu co deklarują.

Migracja z ASCII do Unicode (z Samby 2.0/2.2 do 3.0)

Kiedy zdecydujesz się przemigrować z Samby 2.0/2.2 do Samby 3.0, będziesz musiał zmienić oczywiście opcje odpowiedzialne za kodowanie po stronie Uniksa (character set = ISO8859-2 => unix charset = UTF8) jak i klienta (client code page = 852 => dos charset = CP852). Dodatkowo jeśli posiadasz udostępniony w Sambie 2.0/2.2 katalog zawierający różne "ogonki" będziesz musiał przekonwertować nazwy plików i katalogów do Unicode. Pomocne będzie w tym celu narzędzie convmv. Należy go użyć w poniższy sposób, zakładając że używasz takich kodowań jak są tutaj zadeklarowane.

convmv -f iso-8859-2 -t utf8 -r /katalog_udostepniany_przez_sambę

Moduły VFS

W pakiecie Samba od wersji 2.2 pojawiły się moduły VFS (Virtual File System), a na dobre się zadomowiły w Sambie 3.0. Moduły VFS rozszerzają funkcjonalność Samby o różne cechy i co jest ważne wiele z nich jest standardowo obecnych w pakiecie. do testowania modułów VFS służy komenda vfstest. Konfiguracja danego modułu VFS odbywa się poprzez wpis do smb.conf w definicja danego udziału:

[audit]
comment = Audited /data directory
path = /data
vfs objects = audit recycle
writeable = yes
browseable = yes

Czyli jak widać jest to właściwie normalny udział udostępniony w Sambie z dodaną opcją "vfs objects", w której wymieniamy jakich modułów VFS użyjemy w tym udziale. Oczywiście owe moduły musza znajdować się w twoim systemie, np. w System V (np. Linux Redhat/Fedora) znajdują się one w katalogu /usr/lib/samba/vfs. Bardziej skomplikowany przykład gdy d modułów VFS podajemy jakieś paramery:

[test]
comment = VFS TEST
path = /data
writeable = yes
browseable = yes
vfs objects = example:example1 example example:test
example1: parameter = 1
example: parameter = 5
test: parameter = 7

Lista modułów VFS związanych z udostępnianiem

Poniżej masz listę popularnych modułów VFS z Samby 3.0 rozszerzających możliwości udostępniania w Sambie. Inne moduły VFS są omówione w dziale Zarządzanie zasobami udostępnionymi - opis dla Samba/Unix .

recycle

Często spotykanym problemem przy udostępnianiu plików jest to że usuniecie pliku przez sieć czyni go praktycznie nieodzyskalnym. Konkretnie jeśli usuniesz plik w udostępnieniu na jakimś zdalnym komputerze w sieci to nie trafi on do Kosza (jak to się standardowo dzieje jak byś usunął plik na swoim dysku w Windows lub w środowisku np. KDE/Gnome). Można temu zaradzić i stworzyć w udostępnionych do zapisu udziałach Samby tzw. Kosz i właśnie do tego służy moduł VFS recycle (standardowo w Sambie 3.0). Zasada działania jest prosta, jeśli ktoś usunie jakiś plik w udziale gdzie działa ten moduł zostanie on przeniesiony do owego Kosza, którego parametry możemy zdefiniować. Poniżej przykład dla Samby 3.0 udostępnienia z włączonym Koszem, którego opcje zaznaczono na czerwono.

[test]
path = /jakis/katalog
writeable = yes
vfs objects = recycle
recycle:repository = .KOSZ
recycle:keeptree = True
recycle:versions = True
recycle:touch = True
recycle:exclude = *.tmp|*.o|*.obj|~$*|*.ba0
recycle:exclude_dir = /tmp|/temp|/cache
nazwa udostępniania
ścieżka do udostępnionego katalogu
zezwolenie do zapisu
włączenie Kosza
relatywna ścieżka do katalogu Kosz
zachowanie struktury usuniętych plików i katalogów
zachowanie różnych wersji usuniętych plików i katalogów
dostępność usuniętych danych
pliki które będą usuwane z pominięciem Kosza
katalogi które będą usuwane z pominięciem Kosza

Jak widać konfiguracja jest bardzo prosta. Można dodatkowo użyć opcji:

recycle:directory_mode (np. = 0700) - ustawienie maski uprawnień dla katalogu kosza.
recycle:subdir_mode
(np. = 0700) - ustawienie maski uprawnień dla podkatalogów kosza.
recycle:touch_mtime (=yes|no)
- ustawienie czasu modyfikacji plików gdy będa one trafiały do kosza.
recycle:minsize
-
określenie minimalnej wielkości pliku w bajtach poniżej której będą usuwane z pominięciem kosza.
recycle:maxsize
- określenie maksymalnej wielkości pliku w bajtach powyżej której będą usuwane z pominięciem kosza.
recycle:noversions - lista plików (można używać masek * i ?) w stosunku do których nie będzie używana opcja "recycle:versions" czyli zachowanie różnych wersji.

Konfiguracja Samby aby zdarzenia modułu vfs recycle, na wszystkich udostępnieniach były logowane używając LOCAL1 i priorytetu NOTICE:

[global]
vfs objects = recycle
recycle:facility = LOCAL1
recycle:priority = NOTICE

Dokumentacja Samby modułu VFS recycle - http://us1.samba.org/samba/docs/man/manpages-3/vfs_recycle.8.html

netatalk

Przydatny moduł VFS (standardowo w Sambie 3.0) pozwalający rozwiązać w prosty sposób "problem" z tzw. forkami .AppleDouble poprzez ukrywanie ich w udziałach udostępnianych. Pliki .AppleDouble są tworzone przez systemy Mac OS i starsze implementacje AFP (Apple File Protocol). Owe pliki maja postać "._" i dalej nazwa oryginalnego pliku przez co powoduje to problemy i błędy na niektórych klientach sieci. W innych systemach niż Mac OS robi wrażenie zaśmiecania serwerów niepotrzebnymi plikami, co jest dalej aktualnie gdyż systemy Mac OS X wspierają standardowo SMB, a przez to "śmiecą" owymi plikami w sieci SMB. Z tych właśnie powodów często najlepszym rozwiązaniem z plikami .AppleDouble jest ukrycie ich poprzez wpis:

[test]
vfs objects = netatalk

Dokumentacja Samby modułu VFS netatalk - http://us1.samba.org/samba/docs/man/manpages-3/vfs_netatalk.8.html

default_quota

Zadaniem tego modułu VFS (standardowo w Sambie 3.0) jest ustanowienie tzw. standardowego przydziału dyskowego (czyli default quota) dla użytkowników którzy go nie mają ustawionego. Jak wiadomo użytkownicy potrafią zapchać plikami, każdy nieskończenie duży dysk, szczególnie dostępny z poziomu Windowsa czyli choćby w sieci SMB udostępniony poprzez Sambę. Natomiast wiele implementacji przydziałów dyskowych czyli quoty nie zawiera czegoś takiego jak "default quota", a tylko ograniczenia dyskowe dla konkretnych użytkowników (UID) i grup (GID). Konfiguracja modułu VFS defualt_quota, sprowadza się do podania UID użytkownika lub GID grupy systemowej, na którym zainstalowana jest Samba, której przydział dyskowy (quota) z systemy będzie zwracany jako "default quota" dla użytkowników łączących się z owym zasobem SMB.

[test]
path = /jakis/katalog
writeable = yes
vfs objects =
defualt_quota
default_quota:uid = 12345
default_quota:uid nolimit = no
nazwa udostępniania
ścieżka do udostępnionego katalogu
zezwolenie do zapisu
włączenie
defualt_quota
użycie quoty użytkownika z UID 12345
wyłączenie braku limitu dla owego uzytkownika

Dodatkowo można użyć odpowiednio opcji przydziałów dyskowych zamiast dla użytkownika to dla grupy. Są to opcje default_quota:gid i default_quota:gid nolimit.

dokumentacja Samby modułu VFS defualt_quota - http://us1.samba.org/samba/docs/man/manpages-3/vfs_default_quota.8.html

readonly

Czasem administrując udostępnionymi do zapisu zasobami potrzebujemy cyklicznie włączyć je tylko do odczytu dla wszystkich uzytwkoników, choćby w celu wykonania kopii bezpieczeństwa czyli tzw. backupu. Oczywiście można stworzyć w tym celu skrypt który automatycznie będzie podmieniał w udostępnionym zasobie opcje "writeable" i ustawiał ją odpowiednio na "no" lub "yes". Ale kto lubi pisać skrypty jeśli nie musi i nie każdy potrafi. W końcu taka metoda jest obarczona pewnym poślizgiem czasowym zanim nowa konfiguracja Samby zostanie zastosowana bez odcinania dostępu do udostępnionego zasobu czyli bez restartowania Samby. Właśnie z tych powodów powstał moduł VFS readonly (standardowo w Sambie 3.0), którego konfiguracja jest bardzo prosta:

[test]
path = /jakis/katalog
writeable = yes
vfs objects = readonly
readonly:period = "today 19:00","today 23:00"
nazwa udostępniania
ścieżka do udostępnionego katalogu
zezwolenie do zapisu
włączenie modułu tylko_do_odczytu

zasób
tylko_do_odczytu w godzinach 19:00-23:00

Dokumentacja Samby modułu VFS readonly - http://us1.samba.org/samba/docs/man/manpages-3/vfs_readonly.8.html

shadow_copy

Moduł VFS o nazwie shadow_copy, wprowadza w Sambie obsługę ciekawego mechanizmu obecnego w Windows 2003 o nazwie Shadow Copy (zwanego także Volume Snapshot Service w skrócie VSS) czyli Kopie wolumenów w tle. Zadaniem owej usługi jest robienie kopii danego skonfigurowanego wolumenu (czyli udostępnienia) w tle automatycznie co jakiś czas czyli tzw. migawek (snapshot). Dodatkowo dostęp do poprzednich wersji danych plików jest bardzo prosty dla klientów. W Windows 98/2000/XP/Vista wystarczy wybrać właściwości danego katalogu, gdzie będzie zakładka "Previous Versions" (Wcześniejsze Wersje) z poziomu której można przywrócić poprzednie wersje plików. Dla Windows 98/2000/XP należy zainstalować klienta Shadow Copy.

Aby całość działała należy mieć alby Windows 2003 albo to co nas interesuje, Sambę 3.0 z modułem VFS shadow_copy. Dodatkowo w udostępniony katalog musi  znajdować się na partycji z systemem plików "zamrażania", dzięki czemu możliwe jest robienie migawek (snapshot). Takie systemy plików to XFS (można go "mrozić" poprzez xfs_freeze), który należy posadowić wewnątrz LVM (dzięki niemu robimy migawki). Tak naprawdę można użyć dowolnego systemu plików wewnątrz LVM, nawet ext3, który zamiast "mrozić" będzie przemontowywany w tryb tylko do odczytu (mount -o remount,ro) na czas robienia migawki. Inną metodą, bez korzystania z LVM, jest użycie systemu plików z wbudowaną obsługą migawek. Takie systemy plików to: NTFS (dla Windows), ZFS (Solaris, Mac OS X 10.5, FreeBSD 7.0), etx3now (rozbudowany i niekompatybilny z ext3 dla Linux).

Dokumentacja Samby modułu VFS shadow_copy - http://us1.samba.org/samba/docs/man/manpages-3/vfs_shadow_copy.8.html oraz opis jak powiązać to w całość w oparciu o XFS i LVM.

vscan

Moduł a właściwie grupa modułów VFS służącą do ochrony antywirusowej udostępnionych do zapisu zasobów. Mianowicie gdy użytkownik wrzuca jakiś plik na serwer poprzez udostępnienie Samby, dzięki vscan jest on skanowany antywirusem. W razie znalezienie wirusa jest on np. usuwany a użytkownik dostaje powiadomienie poprzez karteczkę Winpopup. Ten moduł nosi nazwę samba-vscan i nie jest standardowo obecny w Sambie. Można go dodatkowo zainstalować samemu ze źródeł lub skorzystać z gotowych binariów OpenSuse lub z binariów z serwera ftp://ftp.sernet.de/pub/samba/, gdzie dostępne są wersje Samby m.in. z tym modułem, przygotowane dla dystrybucji Linuksa tj.: Red Hat Enterprise Linux (RHEL/Centos), Debian, SuSE Linux Enterprise Linux (SLES). O tym respozytorium możesz poczytac pod tym adresem: http://www.enterprisesamba.org/.
Moduł VFS vscan można zintegrować z wieloma programami antywirusowymi. Podczas kompliacji ze źródeł polecenie configure zwraca następującą listę współpracujących antywirówów: oav sophos fprotd fsav trend icap mksd kavp clamav nai antivir. Oczywiście chyba najczęściej wybierany jest darmowy i bardzo dobrym ClamAV. Poniżej garść odnośników jak tego dokonać oraz skąd pobrać potrzebne pliki.

KSambaPlugin

KSambaPlugin jest "wtyczką" do Konqueror, czyli wszechstronnej przeglądarki ze środowiska graficznego KDE. O użyteczności KSambaPlugin najlepiej świadczy fakt że stało się oficjalna częścią środowiska graficznego KDE od wersji 3.3. Dokładnie zostało włączone do paczki kdenetworka, a przez to KSambaPlugin nie będzie już rozwijane jako samodzielny produkt ale jako oficjalna część KDE.

  Po zainstalowaniu tego dodatku będziemy mogli praktycznie zapomnieć o grzebaniu w pliku konfiguracyjnym Samby. W "KControl Center" ujrzymy dodatkową opcje "Samba Configuration".

Możemy tutaj poustawiać praktycznie wszystko od ustawień globalnych czyli nazwy grupy i naszego komputera, poprzez udostępnienia, drukarki, użytkowników, bezpieczeństwo, domenę, wins, aż do protokółów jakie maja być używane.

KSambaPlugin może nam "ułatwić życie" poprzez bezpośrednie jego wywoływanie przy "właściwościach" danego folderu jaki chcemy udostępnić. Pojawi nam się zakładka "Samba" gdzie definiujemy opcje udostępnień. Opis tutaj zawartych opcji jest zgodny ze standardowymi z smb.conf.

Strona domowa projektu KSambaPlugin - http://ksambakdeplugin.sourceforge.net/, strona domowa KDE - http://kde.org/.

Nautilus-share

Nautilus-share jest "wtyczką" do Nautilius, czyli wszechstronnej przeglądarki ze środowiska graficznego Gnome. Można stwierdzić że ów program jest swego rodzaju odpowiednikiem KSambaPlugin ze środowiska graficznego KDE. Nautilus-share pozwala udostępniać foldery w sieci poprzez Sambę bez posiadania praw superużytkownika root i do tego jeszcze w wygodny sposób.

Nautilus-share, jak inne programy tego typu, do działania potrzebuje odpalonego pakietu Samba, ze skonfigurowaną następującą opcją w pliku konfiguracyjnym smb.conf:

include = /etc/samba/smbshared.conf

Samo udostępnianie przebiega w prosty sposób, z poziomu Nautiliusa zaznaczamy folder, z menu kontekstowego wybieramy opcje Share. Następnie podajemy nazwę pod jaką chcemy udostępnić folder oraz czy udostępnienie ma posiadać opcje zapisu oraz ewentualny komentarz. Udostepnione foldery są w Nautiliusie oznaczane "łapką". Całość jest niezmiernie prosta, nie ma tutaj wielu opcji z Samby oraz nasuwa nieodparte skojarzenia ze stylu udostępniania znanego z Windows 95/98/Me.

   

Program Nautilus-share jest dalej rozwijany. Strona domowa projektu Nautilus-share - http://gentoo.ovibes.net/nautilus-share/

Take a Joint

Projekt "Take a Joint" ma za zadanie umożliwić prosta integracje Linux z siecią SMB. Konkretnie skupiono się na umożliwieniu udostępniania pików w prosty sposób przez użytkowników bez potrzeby posiadania praw superużytkownika systemu czyli root. Położono przy tym bardzo duży nacisk na bezpieczeństwo. Dokładnie wygląda to tak że administrator czyli root przydziela prawa poszczególnym użytkownikom do udostępniania ich folderów i dopiero wtedy tylko ci użytkownicy mogą udostępnić swój folder. Dlatego są to tak naprawdę dwa programy, pierwszy dla użytkownika root do zarządzania pozostałymi użytkownikami, a drugi dla zwykłych użytkowników do udostępniania swoich folderów. Obecnie są to narzędzia wiersza poleceń (odpowiednio taja i taju) ale w przyszłości było planowane stworzenie nakładki graficznej dla środowiska graficznego KDE i jego menadżera plików Konqueror.

"Take a Joint" do działania potrzebuje odpalonego pakietu Samba, ze skonfigurowaną następującą opcją w pliku konfiguracyjnym smb.conf:

include = /etc/taj/samba.inc.conf

Oczywiście wypada jeszcze mieć jakoś skonfigurowaną Sambę, przykładowa minimalna konfiguracja:

workgroup = [twoja grupa robocza]
invalid users = root
public = yes
browseable = yes
security = user
encrypt passwords = yes

I właśnie na powyższym wpisie include jest oparta cała magia programu. Samba pozwala mianowicie dołączać konfiguracje z zewnętrznych plików konfiguracyjnych co jak widać tu się przydaje. Poniżej pokazany jest wynik działania komendy taju dodającej z poziomu zwykłego użytkownika katalog udostępniony w sieci SMB.

Program Take a Joint nie jest rozwijany od 2004 roku, a jego role w kwestii nakładek graficznych przejął choćby opisany wcześniej Nautilus-share. Jego strona domowa znikneła w otchłani Internetu, kiedyś znajdowała się pod tym adresem - http://www.linux-fuer-alle.de/mr/taj/.

  na gorę

W dziale Programy wspomagające udostępnianie możesz przeczytać o innych programach graficznych pozwalających w prosty i szybki sposób udostępniać zasoby Samby oraz generalnie nią zarządzać.

  Pamiętaj!

  • Wszystko, co udostępnisz, będzie widoczne dla każdego użytkownika sieci, chyba że zabezpieczysz dostęp hasłem.

  • Jeśli nie chcesz, by ktoś ci namieszał w twoich plikach, ustawiaj "Tryb dostępu" na "Tylko do odczytu". Ludzie bywają złośliwi!

  • Samba posiada bardzo dużo opcji konfiguracji, zażyj do pomocy (man smb.conf), a najlepiej przeczytaj książkę o Sambie.

  • Ciekawym rozwiązaniem są też Udostępnienia ukryte i administratorskie.

    na gorę


Drukuj Dokument