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

Otoczenie sieciowe - Sieć SMB

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

Montowanie Dysków Sieciowych - Samba/Unix

W dużym uproszczeniu to co w systemach Windows nazywa się mapowaniem dysków sieciowych to w systemach typu Samba/Unix jest w montowaniem. Po części różnica wynika z innej nomenklatury nazewnictwa w tych systemach, a po części z innego podejścia do "problemu". Większość programów omówionych w dziale Programy do przeglądania sieci SMB - Samba-Unix, korzysta w rzeczywistości z montowania dysków, wiec poniższy opis byłby powielaniem tamtego przeglądu. Ale w systemach opartych na rozwiązaniu Samba/Unix sprawa się jeszcze trochę komplikuje gdyż istnieje szeroka gama rozwiązań uniksowych, z których każdy posiada swoje jakieś odmienne cechy m.in. w obsłudze sieci SMB, a w szczególności w montowaniu dysków sieciowych. Z tych względów opisze tutaj tylko komendy wiersza poleceń/konsoli, gdyż mimo mnogości programów korzystają one właśnie z tych rozwiązań. Opis zostanie podzielony na dwie części, czyli Linux oraz systemy *BSD. Razem stanowią one obecnie chyba większość używanych systemów uniksowych.

Linux

Obsługa SMBFS/CIFS

System Linux potrafi zamontować dysk sieciowy SMBFS/CIFS w sieci SMB (Microsoft Networks) pod warunkiem że jest zainstalowany pakiet Samba oraz że w używany kernel (jądro systemu) obsługuje SMBFS/CIFS, czyli albo ma wkompilowane na stałe lub jako moduł (wtedy trzeba go załadować). Oczywiście w większości popularnych dystrybucji nie powinieneś na standardowym kernelu otrzymać komunikatu w stylu "smbfs filesystem not supported by the kernel", gdyż taka obsługa zazwyczaj już jest.

 Jeśli sam będziesz przygotowywał kernel Linuksa, po włączeniu np. make menuconfig, będziesz musiał wybrać odpowiednie opcje. Opis opcji w kernelach od 2.2 (a właściwie od 1.3 i 2.0), poprzez 2.4, aż do 2.6 został opisany poniżej.

W kernelu 2.2 i wcześniejszych czyli 2.0 i 1.3 (ktoś w ogóle tego jeszcze używa) obsługę sieciowego systemu plików SMB można włączyć poprzez:

 Filesystems ---> Network File Systems (kernel 2.2) --->

  • SMB filesystem support (to mount WfW shares etc.) - CONFIG_SMB_FS
    Dodatkowe dostępne opcje to:

  • W kernelu 2.2 - "Use a default NLS" (CONFIG_NLS_DEFAULT) z jedną podopcją "Default Remote NLS Option: "cp437" (CONFIG_SMB_NLS_REMOTE). Pozwala to ustawić standardowe kodowanie dla montowanych systemów plików SMB. Wspierana jest ta opcja wraz z smbmount z Samby od wersji 2.2.

  • W kernelu 2.0 - "SMB Win95 bug work-around" czyli obejście pewnego błędu systemu Windows 95 podczas odczytu katalogów na nim.

  • W kernelu 1.3 nie mamy co szukać dodatkowych opcji bo ich po prostu nie ma.

W kernelu 2.4 obsługę sieciowego systemu plików SMB można włączyć poprzez:

File systems ---> Network File Systems --->

  • SMB file system support (to mount Windows shares etc.) - CONFIG_SMB_FS
    Dodatkowe dostępne opcje to:

    • "Use a default NLS" (CONFIG_NLS_DEFAULT) z jedną podopcją "Default Remote NLS Option: "cp437" (CONFIG_SMB_NLS_REMOTE). Pozwala to ustawić standardowe kodowanie dla montowanych systemów plików SMB. Wspierana jest ta opcja wraz z smbmount z Samby od wersji 2.2.

    • Enable Unix Extensions (CONFIG_SMB_UNIX) - Jest to pierwsza opcja w kernelu, która dodaje rozszerzenia dla SMB czyli z CIFS. Owe rozszerzenia Unix to wsparcie dla użytkowników Unix, praw dostępu, dowiązań symbolicznych (symlniki), itp czyli opcji standardowo niedostepnych w "klasycznym" sieciowym systemie plików jakim jest SMB. Aby z tego skorzystać trzeba użyć dodatkowo serwera Samby od wersji 3.0.

W kernelu 2.6 obsługę sieciowych systemów plików SMB i CIFS można włączyć poprzez:

File systems ---> Network File Systems --->

  • SMB file system support (to mount Windows shares etc.) - CONFIG_SMB_FS
    Dodatkowe dostępne opcje to:

    • "Use a default NLS" (CONFIG_NLS_DEFAULT) z jedną podopcją "Default Remote NLS Option: "cp437" (CONFIG_SMB_NLS_REMOTE). Pozwala to ustawić standardowe kodowanie dla montowanych systemów plików SMB. Wspierana jest ta opcja wraz z smbmount z Samby od wersji 2.2.

  • CIFS support (advanced network filesystem for Samba, Window and other CIFS compliant servers - CONFIG_CIFS - Opcja coraz częściej wybierana standardowo w wielu dystrybucjach Linux, nawet bez wsparcia dla samego SMB.

    • CIFS statistics (CONFIG_CIFS_STATS) a w nim Extended statistics (CONFIG_CIFS_STATS2) - Statystyki dla każdego zamontowanego udziału CIFS, gromadzone w /proc/fs/cifs/Stats oraz bardziej szczegółowe służące już raczej do diagnostyki ewentualnych problemów.

    • Support legacy servers which use weaker LANMAN security (CONFIG_CIFS_WEAK_PW_HASH) - Wsparcie dla starszych metod bezpieczeństwa takich jak LANMAN, standardowo w Windows 95/98/Me oraz OS/2. Obecnie jest używane NTLM i NTLM2, ale warto zaznaczyć tą opcje aby się móc dostać poprzez CIFS na starsze systemy.

    • CIFS extended attributes (CONFIG_CIFS_XATTR) a w nim CIFS POSIX Extensions (CONFIG_CIFS_POSIX) - rozszerzone atrybuty CIFS,a  w nim rozszerzania POSIX czyli m.in. Listy Kontroli Dostępu (POSIX ACL). Warto zaznaczyć i zaopatrzyć się w Sambę od wersji 3.0.10.

    • Enable additional CIFS debugging routines (CONFIG_CIFS_DEBUG2) - Włączenie trybu diagnostyki.

    • CIFS Experimental Features (CONFIG_CIFS_EXPERIMENTAL) - Różne testowane opcje CIFS w systemie Linux, takie jak DFS, wsparcie dla informowania zmianach katalogów, różnych mechanizmów negocjacji sesji Kerberos. Niektóre z tych opcji można włączyć poprzez zmiany w /proc/fs/cifs/Experimental.

UWAGA: CIFS jest rozszerzaniem SMB obsługiwane przez Sambe od wersji 3.0 ( w Linux 2.6 i opcjonalnie 2.4) oraz przez Windows od wersji 2000 i późniejszych w tym XP, 2003, Vista i NT 4.0. Ograniczona obsługa CIFS jest zaimplementowana w Windows ME i OS/2. CIFS (Common Internet File System) jest sukcesorem po SMB (Server Message Block), gdzie dodano m.in. rozszerzenia i usprawnienia typu DFS, oplock, wspracie dla dużych plików, opcjonalne podpisywanie pakietów, nawiązywanie sesji per-użytkownik, wsparcie dla Unicod i wiele innych związanych z internacjonalizacją. O CIFS w systemie Linux możesz poczytać pod tym adresem - http://us1.samba.org/samba/Linux_CIFS_client.html, natomiast specyfikacja CIFS dostępna jest na tej stronie - http://www.snia.org/tech_activities/CIFS.

 

Montowanie i odmontywanie zasobów SMBFS/CIFS

Montowanie z wiersza poleceń (w terminalu) zasobów SMBFS/CIFS wykonujemy w następujący sposób:

  • Montujemy jako gość katalog "udział" znajdujący się na "komp" umieszczając go w naszej strukturze katalogów w miejscu "/mnt/mountpoint":
    mount -t smbfs -o guest //komp/udzial /mnt/mountpoint
    mount -t cifs -o guest //komp/udzial /mnt/mountpoint

  • Użytkownik "user" z hasłem "hasło" montuje katalog  "udział" znajdujący się na "komp" umieszczając go w naszej strukturze katalogów w miejscu "/mnt/mountpoint"
    mount -t smbfs -o username="user",password="hasło" //komp/udział /mnt/mountpoint
    mount -t cifs -o user="user",password="hasło" //komp/udział /mnt/mountpoint
    Jak można zauważyć powyżej niektóre opcje miedzy smbfs i cifs różnią się. Dlatego warto zwrócić na to uwagę, w tym celu polecam przeczytać opis różnic w opcjach poniżej.

  • Montujemy jak wcześniej tyle że dane użytkownika i hasło zawarte są w pliku .plik_z_haslem w katalogu /home/user/.
    mount -t smbfs  -o credentials=/home/user/.plik_z_haslem //komp/udział /mnt/mountpoint
    mount -t cifs  -o credentials=/home/user/.plik_z_haslem //komp/udział /mnt/mountpoint
    Ów plik /home/user/.plik_z_haslem ma format jak niżej:
    username = jakiś_użytkownik
    password = jakieś_hasło

Zamiast używać komendy mount/umount -t smbfs, możesz po prostu użyć komendy smbmount/smbumount, co jest równoznaczne gdyż mount/umount w tym wypadku do niej się odwołuje. Naprawdę sytuacja jest nieco ciekawsza gdyż dokładna ścieżka odwołań wygląda następująca w przypadku smbfs:

  • mount/umount -t smbfs odwołuję się do komendy mount.smbfs

  • mount.smbfs jest dowiązaniem symbolicznym do smbmnt

  • smbmnt natomiast wzywa do działania program smbmount/smbumount

W przypadku cifs powyższa historia nie jest już aż tak pasjonująca gdyż wywołanie komendy mount/umount -t cifs najzwyczajniej w świecie wywołuje tylko komendę mount.cifs. Po prostu nuda i banał w porównaniu z smbfs.

Jeśli chcesz żeby mógł to wykonać zwykły użytkownik zainteresuj się pakietem sudo (www.courtesan.com/sudo). Aby nadać możliwość montowania udziałów smbfs, przez zwykłych użytkowników, można pobawić się z uprawnieniami do smbmnt:
chmod u+s /usr/bin/smbmnt
z poziomu użytkownika na niektórych dystrybucjach będzie trzeba jeszcze dodać:
export PATH=$PATH:usr/bin/smbmnt
export PATH=$PATH:usr/bin/

W nowszych dystrybucjach systemu Linux odchodzi się od używania SMBFS na rzecz CIFS. Warto zatem na nim realizować szczególnie połączenia miedzy systemami je obsługującymi czyli Samba 3.0/Linux 2.6 a Windows 2000/XP/2003. Owe połączenia to oczywiście montowanie zasobów poprzez CIFS, a konkretnie komendę mount.cifs. Składnia komendy mount.cifs jest podobna do smbmount z pewnymi różnicami w nazwach opcji. Dodatkowo została owa komenda rozszerzona o cechy charakterystyczne dla CIFS jak choćby listy kontroli dostępu ACL. Zamiennie z komendą mount.cifs możesz oczywiście używać komendy mount -t cifs.

Najpopularniejsze opcje komend smbmount/mount.cifs zostały wyjaśnione poniżej:

  • username/user - Podanie użytkownika na jakiego chcemy się łączyć z udziałem.

  • password/password - Podanie hasła dla użytkownika lub do udziału z jakim chcemy się łączyć z udziałem.

  • credentials/credentials - Nazwa pliku gdzie jest podany użytkownik i hasło .

  • uid/uid - ID użytkownika dla wszystkich plików i katalogów w montowanym udziale, podane jako "użytkownik" lub jego UID.

  • gid/gid - ID grupy dla wszystkich plików i katalogów w montowanym udziale, podane jako "grupa" lub jego GID.

  • fmask/file_mode - Numeryczna maska praw chmod dla wszystkich plików, domyślne bazuje na standardowej wartości umask. W przypadku CIFS domyślna maska dla plików jeśli serwer nie obsługuje rozszerzeń CIFS dla Uniksa.

  • dmask/dir_mode - Numeryczna maska praw chmod dla wszystkich katalogów, domyślne bazuje na standardowej wartości umask. W przypadku CIFS domyślna maska dla katalogów jeśli serwer nie obsługuje rozszerzeń CIFS dla Uniksa.

  • debug/--verbose - Numerycznie podany poziom debugowania. W przypadku CIFS włączenie debugowania.

  • workgroup/domain - Nazwa grupy roboczej zdalnego serwera. W przypadku CIFS domena/grupa robocza użytkownika.

  • guest/guest - Powija pytanie o hasło podczas montowania.

  • ro/ro - Montowanie z trybem tylko do odczytu.

  • rw/rw - Montowanie z trybem odczytu/zapisu, co jest domyślna wartością.

  • ttl/brak odpowiednika - Numeryczna wartość czasu trzymana w pamięci podręcznej zawartości katalogów, domyślnie 1000 ms .

Wszystkie opcje komendy smbmount są dostępne oczywiście na odpowiedniej stronie manuala dostępnej w twoim systemie poprzez man smbmount, dodatkowo warto zerknąć na man smbmnt. Oczywiście lektura man mount.cifs jest też zalecana, choćby na stronie www - http://us1.samba.org/samba/docs/man/manpages-3/mount.cifs.8.html.

FSTAB

Plik konfiguracyjny fstab (file systems table) występuje w systemach operacyjnych UNIX i innych systemach jemu pokrewnych. W owym pliku znajdującym się z reguły w katalogu /etc, są zapisane informacje o dyskach, partycjach i systemach plików w naszym systemie operacyjnym i z jakimi opcjami owe systemy plików maja być montowane oraz czy ma się to dziać przy starcie systemu. Czyli są tam zawarte wszystkie informacje aby za każdym razem, gdy chcemy zamontować choćby "ręcznie" jakiś system plików nie wpisywać "robaczka" komendy mount.

Plik /etc/fstab składa się z pięciu kolumn z których każda określa:

  • fs_spec - Urządzenie blokowe (np. dysk, partycję) lub zdalny system plików, np. /dev/hda1.

  • fs_file - Miejsce montowania systemu plików, np. /mnt/cdrom.

  • fs_vfstype - System plików jaki znajduje się na danym urządzeniu, np. ext3, smbfs.

  • fs_mntops - Opcje montowania, często defaults czyli rw,suid,dev,exec,auto,nouser,async.

  • fs_freq - Używane przez komendę dump do wykrywania, który system plików musi być odłączony.

  • fs_passno - Używane przez program fsck, wartości 0 1 lub 2 decydują o kolejności sprawdzania systemów plików podczas ładowania systemu.

Wpis w pliku /etc/fstab dla systemu plików SMBFS może wyglądać tak jak poniżej:

  • Zasób montowany na konto Gość z możliwością zapisu przez wszystkich:
    //komp/udzial   /mnt/mountpoint   smbfs   guest,fmask=777,dmask=777   0   0

  • Zasób montowany na konto "user" z hasłem "mojehasło":
    //komp/udzial   /mnt/mountpoint   smbfs   username="user",password="mojehasło"   0   0

  • No i metoda na polskie znaczki, po stronie Linuksa założyłem ISO-8859-2 (uwaga: wymagany kernel 2.4 lub nowszy), czyli komenda locale zwróci same zmienne równe pl_PL (jak spolszczyć Linuksa, czytaj: http://linux.sky.pl/teksty/popolsku.html):
    //komp/udzial   /mnt/mountpoint   smbfs   guest,,iocharset=iso8859-2,codepage=cp852   0   0

  • Ale nowsze dystrybucje Linuksa używają kodowania UTF-8, więc wtedy polskie znaczki uzyskamy poprzez wpis:
    //komp/udzial   /mnt/mountpoint   smbfs   guest,,iocharset=utf8,codepage=cp852   0   0
    Uwaga: Nie stosuj w fstab dyrektyw noauto i defaults przy zasobach smbfs, gdyż wydają się one blokować osiągniecie polskich znaczków na zdalnych zasobach.

Teraz żeby zamontować te udziały wystarczy wpisać mount //komp/udzial. Aby odmontować dany zasób smbfs należy użyć komendy smbumount /mnt/mountpoint lub ciut krócej umount/mnt/mountpoint, można też poprzez odwołanie nie miejsca montowania ale tego co zamontowaliśmy jeśli jest wpisane w /etc/fstab czyli umount //komp/udzial. Zauważ że cały proces montowania i odmotowywania musisz wykonywać jako root.

Niestety montowanie za pomocą fstab ma tez swoje wady. O ile jest to bardzo wygodne rozwiązanie dla lokalnych systemów plików, które są z reguły zawsze dostępne to przy sieciowych systemach plików jak SMBFS/CIFS już tak zawsze nie jest. Dany zasób sieciowy SMBFS/CIFS, może przestać być dostępny i gdy mamy go zamontowanego, nasz system zacznie wyrzucać błędy, ponawiać próby montażu i tak przez bardzo długi czas zanim uda nam się ów zasób odmontować. Jest to scenariusz dość częsty i niestety denerwujący. Kolejna wada montowania poprzez fstab, jak i ręcznego, to trzeba posiadać prawa root do owej operacji montowania. Dodatkowo te same prawa root trzeba posiadać aby dodać kolejny wpis do fstab, gdy np. zechcemy dodać kolejny zasób sieciowy do naszego systemu. Jak widać powyższe metody montowania nie bardzo przystają do dynamicznie się zmieniających zasobów sieci, gdzie dodatkowo zwykły użytkownik sam chciałby montować zasób SMBFS/CIFS jaki właśnie znalazł w sieci. Właśnie miedzy innymi z tych powodów stworzono coś takiego jak autofs.

AUTOFS

Lepszą metodą aby montować zasoby sieciowe zamiast używania fstab jest użycie demona autofs. Po pierwsze wtedy nam niestraszne przerwy w dostępne do montowanego zasobu sieciowego. Po drugie można montować nawet dowolny zasób na żądanie.

Autofs jest demonem automatycznego montowania różnych systemów plików lokalnych i sieciowych, czyli wszystkiego co jest obsługiwane poprzez komendę mount. Jego zalety poznajmy przy ciągle zmieniających się zasobach np. przy CDROMach, różnych zabawkach na USB no i oczywiście przy sieciowych systemach plików tj. NFS i SMBFS/CIFS.

Demon autofs jest narzędziem w przestrzeni użytkownika, wymagana jest dodatkowo obsługa automountera w kernelu (domyślnie w 2.6).  Autofs czyta swoja konfiguracje z tzw. "map" czyli plików z konfiguracją. Główny plik konfiguracyjny to /etc/auto.master, w którym znajdują się odwołania do plików konfiguracyjnych ze zdefiniowanymi zasobami do montowania, a przede wszystkim /etc/auto.misc. Wystarczy teraz w pliku /etc/auto.misc dodac swój wpis do montowania konkretnego zasobu CIFS:

komp -fstype=cifs,rw,noperm,user=użytkownik,pass=hasło ://komp/udzial

Gdy chcesz ukryć hasło, należy wykorzystać do tego oddzielny plik:

komp -fstype=cifs,rw,noperm,credentials=/root/secret.txt ://komp/udzial

Jak widać autofs, przyjmuje dokładnie takie same opcje montowania (-fstype) jak komenda mount. Jeśli zamiast nazwy komputera chcesz podać jego adres IP, dodaj wpis wins w opcji hosts w pliku /etc/nsswitch.conf.

Teraz aby uzyskać dostęp do owego zasobu udział, czyli go zamontować, wystarczy wejść w katalog /misc/komp. Oczywiście jeśli jako punkt montowania w pliku /etc/auto.master dla /etc/auto.misc, jest zdefiniowany katalog  /misc. Aby to sprawdzić, wystarczy zajrzeć do pliku /etc/auto.master i poszukać wpisu "/misc /etc/auto.misc".

Powyższa metoda jest wygodna ale tylko dla ograniczonej liczby zasobów. Wyobraź sobie teraz sieć z nieograniczoną liczbą zasobów lub po prostu z ciągle zmieniającymi się zasobami. Czyli różne komputery się włączają, różni użytkownicy cos tam udostępniają, innym razem coś innego chcą udostępnić i tak bez przerwy udostępniane jest ciągle coś innego. Wtedy można załatwić cała konfiguracje nadzwyczaj prosto. Wystarczy stworzyć ogólny wpis udostępnionego zasobu. Czyli po kolei:

  • Tworzymy punkt montowania naszych wszelakich zasobów smb:
    mkdir /mnt/smb

  • Dodajemy wpis do pliku /etc/auto.master informujący gdzie będą montowane zasoby smb:
    /mnt/smb /etc/auto.smb.top

  • Tworzymy nasz plik konfiguracyjny /etc/auto.smb.top, a w nim następujący wpis:
    * -fstype=autofs,-Dhost=& file:/etc/auto.smb.sub

  • Tworzymy kolejny plik konfiguracyjny /etc/auto.smb.sub, ze wpisem:
    jeśli zasoby będą bez haseł
    * -fstype=cifs,uid=500,gid=100 ://${host}/&
    lub jeśli zasoby są na hasło
    * -fstype=cifs,credentials=/root/secret.txt,uid=500,gid=100 ://${host}/&

  • Testujemy działanie tego cuda, wchodząc do odpowiedniego katalogu:
    cd /mnt/smb/komp/udzial

Jak widać szczególnie po ostatnim przykładzie autofs potrafi ułatwić życie.

BSD

Systemy z rodziny BSD czyli m.in. NetBSD, FreeBSD, Mac OS X, Darwin, nie obsługują znanego z systemu Linux sposobu na montowanie udziałów udostępnionych w sieci SMB (Microsoft Networks) do lokalnego systemu plików przez komendy "smbmount" i "smbmnt" z pakietu Samba. W systemach BSD za montowanie zasobów SMB odpowiada komenda mount_smbfs. Z jakiś powodów tylko OpenBSD nie obsługuje mount_smbfs i trzeba się w nim posiłkować programem Sharity.

mount_smbfs

Komenda mount_smbfs pełni dokładnie taką samą rolę w systemach BSD czyli m.in. NetBSD, FreeBSD, Mac OS X, Darwin, jak w systemie Linux komenda smbmount.

Montowanie zasoby smbfs przy pomocy mount_smbfs wykonujemy tak:

  • mount_smbfs '//komp/udzial' /Volumes/mountpoint - montujemy tutaj jako gość katalog "udział" znajdujący się na "komp" umieszczając go w naszej strukturze katalogów w miejscu "/Volumes/mountpoint".

  • mount_smbfs '//grupa-robocza;user:haslo6@komp/udzial' /Volumes/mountpoint - montujemy tutaj jako użytkownik "user" z hasłem "haslo" katalog  "udział" znajdujący się na "komp" umieszczając go w naszej strukturze katalogów w miejscu "/Volumes/mountpoint".

Najpopularniejsze opcje komendy mount_smbfs zostały wyjaśnione poniżej:

  • -I hostname - Adres IP lub nazwa DNS serwera do którego chcemy się podłączyć.

  • -N - Powija pytanie o hasło podczas montowania.

  • -U - Podanie użytkownika na jakiego chcemy się łączyć z udziałem.

  • Hasło jest podawane bez parametru.

  • -W - Nazwa grupy roboczej zdalnego serwera.

  • -f mode - Numeryczna maska praw chmod dla wszystkich plików, domyślne bazuje na standardowej wartości umask.

  • -d mode Numeryczna maska praw chmod dla wszystkich katalogów, domyślne bazuje na standardowej wartości umask ale jest dodawany bit wykonywania dla katalogów które mogą być czytane.

  • -u -  ID użytkownika dla wszystkich plików i katalogów w montowanym udziale, podane jako "użytkownik" lub jego UID.

  • -g - ID grupy dla wszystkich plików i katalogów w montowanym udziale, podane jako "grupa" lub jego GID.

  • -n long - Wyłaczenie wsparcia dla długich nazw plików, czyli biedzie używany standard nazw typu to 8.3.

  • -w hostname - Nazwa hosta lub adres IP serwera NetBIOS.

Opis wszystkich opcji komendy znajdziesz na stronach podręcznika mount_smbfs, dostępnych w twoim systemie za pomocą komendy man mount_smbfs oraz pod tym adresem  http://www.hmug.org/man/8/mount_smbfs.php.

Komenda ta została opisana również w dziale Montowanie Dysków Sieciowych - opis dla Mac OS X w akapicie Użycie Terminala i komendy mount. Dodatkowo w tym samym dziale w akapicie Użycie pliku .nsmbrc został opisany plik haseł ~/.nsmbrc używany przez komendę mount_smbfs. Nic nie stoi na przeszkodzie żebyś  z tych porad skorzystał również w innych systemach z rodziny BSD czyli m.in. NetBSD, OpenBSD, FreeBSD,, Darwin, a nie tylko w  Mac OS X.

Użycie plików .nsmbrc i nsmb.conf

Montowanie udziałów SMB wymaga wpisywania za każdym razem jeśli to potrzebne szeregu danych typu nazwa użytkownika, hasło, grupa robocza. Jest to nużące ale można sobie uprościć życie przy użyciu pliku .nsmbrc, który będzie zawierać te dane. Plik .nsmbrc jest standardowym plikiem przechowującym hasła dostępu dla komendy mount_smbfs, obecnej w systemach BSD czyli m.in. NetBSD, FreeBSD, Mac OS X, Darwin.  Utwórz w swoim katalogu domowym plik .nsmbrc o prawach dostępu na poziomie systemu plików 0600 (komenda chmod). Owe prawa dają możliwość odczytu tylko właścicielowi pliku, jest to bardzo ważne gdyż plik ten zawiera hasła dostępu do zdalnych zasobów.  Format pliku ~/.nsmbrc jest następujący:

[KOMP:USER:KATALOG]
addr=192.168.1.20
password=tajne_hasło
workgroup=WARIACI

[ARCHIWUM:GLAPPO:MP3]
addr=192.168.1.1
password=tajne_hasło
workgroup=WARIACI

W pierwszej linii w nawiasach kwadratowych masz po kolei nazwę NetBIOS komputera zdalnego KOMP, nazwę użytkownika USER oraz nazwę udziału jaki będziesz montował. W następnych liniach jest adres IP komputera KOMP, hasło dostępu dla danego użytkownika USER oraz grupa robocza WARIACI. Następnie o wolnym wierszu możesz w pliku nsmbrc dodać następną grupę.

Kolejnym ciekawym plikiem jest nsmb.conf znajdujący się standardowo w katalogu /etc. Jest to globalny plik ustawień dla żądań SMB przekazywanych z programów smbutil i mount_smbfs jak i montowań SMB Findera z Mac OS X. Możemy w tym pliku ustawić globalnie opcje dla połączeń SMB. Plik /etc/nsmb.conf może zawierać sekcje [default] gdzie definiujemy globalne parametry montowań SMB oraz trzy rodzaje sekcji zawierających spersonalizowane względem danych serwerów parametry montowań SMB. Owa personalizacja parametrów względem danych serwerów odbywa się poprzez odpowiednie nazewnictwo owych sekcji w poniższym stylu.

[SERVER]
[SERVER:USER]
[SERVER:USER:SHARE]

Oczywiście nazwę SERVER należy zastąpić nazwą danego serwera, USER zastąpić nazwą użytkownika SMB na danym serwerze, a SHARE nazwą udziału udostępnionego na danym serwerze. Owe sekcje mogą zawierać opcje typu: addr (adres serwera NetBIOS), charsets (kodowanie), workgroup (grupa robocza), password (hasło), czyli praktycznie to samo co możesz wpisać w pliku danego użytkownika .nsmbrc.

W sekcji [default] niektóre też w sekcji typu SERVER, pliku /etc/nsmb.conf możesz użyć opcji typu: nbns (adres serwera WINS), nbscope (NetBIOS scope), nbtimeout (limit czasu serwera NetBIOS), retry_count (liczba prób zanim połączenie zostanie uznane jako zerwane), workgroup (grupa robocza), minauth (minimalny protokół).

FSTAB

Plik konfiguracyjny fstab (file systems table), jak już mogłeś się dowiedzieć z jego opisu dla systemu Linux, występuje w systemach operacyjnych UNIX i innych systemach jemu pokrewnych. W systemach BSD pełni on taka samą rolę co w innych systemach Unix, czyli są w nim zapisane informacje o dyskach, partycjach i systemach plików w naszym systemie operacyjnym i z jakimi opcjami owe systemy plików maja być montowane oraz czy ma się to dziać przy starcie systemu. Czyli są tam zawarte wszystkie informacje aby za każdym razem, gdy chcemy zamontować choćby "ręcznie" jakiś system plików nie wpisywać "robaczka" komendy mount.

We FreeBSD i innych systemach BSD tj. NetBSD, Mac OS X, Darwin, wpis w pliku /etc/fstab dla systemu plików SMBFS może wyglądać tak jak poniżej:

  • Zasób montowany na konto Gość z możliwością zapisu przez wszystkich:
    //komp/udzial   /mnt/mountpoint   smbfs   rw,noauto   0   0

  • Zasób montowany na konto "user":
    //user@komp/udzial   /mnt/mountpoint   smbfs  
    rw,noauto   0   0
    Następnie wyedytuj plik /etc/nsmb.conf i umieśc w nim tego typu wpis
    [
    komp] addr=XX.XX.XX.XX [komp:user] password=mojehasło

Teraz żeby zamontować te udziały wystarczy wpisać mount //komp/udzial. Aby odmontować dany zasób smbfs należy użyć komendy umount/mnt/mountpoint, można też poprzez odwołanie nie miejsca montowania ale tego co zamontowaliśmy jeśli jest wpisane w /etc/fstab czyli umount //komp/udzial. Zauważ że cały proces montowania i odmotowywania musisz wykonywać jako root.

Oczywiście jak w przypadku systemu Linux w systemach BSD, montowanie za pomocą fstab, nie najlepiej sie nadaje do dynamicznie zmieniającej się sieci komputerowej, gdzie co róż jakiś komputer wraz z jego zasobami się pojawia lub znika. Dany zasób sieciowy SMBFS/CIFS, może przestać być dostępny i gdy mamy go zamontowanego, nasz system zacznie wyrzucać błędy, ponawiać próby montażu i tak przez bardzo długi czas zanim uda nam się ów zasób odmontować. Kolejna kwestia to konieczność posiadania praw użytkownika root w celu manipulowania plikiem fstab i montowania systemów plików. Właśnie miedzy innymi z tych powodów stworzono coś takiego jak demon automount. W systemach BSD standardowo dostępny jest AMD czyli Auto Mount Demon działający w przestrzeni użytkownika. AMD został stworzony m.in. pod kontem automatyzacji montowania zasobów NFS i jest obecny w większości systemów UNIX, nie tylko z rodziny BSD ale nawet w systemie Linux gdzie ma jako konkurenta autofs. Niestety nie udało mi się odnaleźć informacji jak zmusić AMD to współpracy z zasobami sieciowymi SMB.

shlight

Swego czasu jedyna możliwością w systemach z rodziny BSD, było użycie innego sposobu w postaci darmowego pakietu klienckiego Sharity-Light. Program ten jest w zasadzie "konwerterem" z protokołu SMB na NFS, działa na poziomie użytkownika a nie jądra systemu (tak jak jest to w Linuksie). Obecnie shlight nie jest już rozwijany od końca 2003 roku skończywszy na wersji 1.3 ale został przeportowany na systemy NextStep, Openstep/Mach, Linux, FreeBSD, NetBSD, BSDI, Solaris, HP-UX i IRIX.

Montowanie zasobu smbfs przy pomocy Sharity-Light wygląda np. tak:

shlight //komp/udzial /katalog_lokalny [ewentualne opcje]

Najczęściej używane opcje to -U czyli użytkownik, -P czyli hasło, -n brak hasła, -W grupa robocza, -u uid, -g gid. Wszystkie opcje są opisane w pliku README dołączonym do programu i dostępnym pod adresem - http://www.obdev.at/ftp/pub/Products/Sharity-Light/Sharity-Light.1.3.README.

Odmontowanie odbywa się oczywiście w równie prosty sposób poprzez:

unshlight katalog_lokalny

Możesz tez po prostu odmontowac wszystkie zasobu poprzez:

unshlight -a

Program Sharity-Light możemy ściągnąć ze strony projektu http://www.obdev.at/products/sharity-light/.


Drukuj Dokument