7.23. Katalog współdzielony z wykorzystaniem Samby

Czasami zachodzi potrzeba wymiany danych między użytkownikami logującymi się na komputery linuksowe i windowsowe. Jednym z rozwiązań jest udostępnienie publicznego katalogu, który będzie widoczny ze wszystkich komputerów w sieci i będzie pozwalał wszystkim użytkownikom na zapisywanie w nim danych.

Niniejszy opis dotyczy przykładowej konfiguracji, w której sieć lokalna ma adres IP 192.168.1.0, istnieje jeden serwer linuksowy o nazwie linserv, kilka terminali linuksowych i windowsowych. Wszystkie komputery linuksowe muszą mieć zainstalowaną Sambę. Kolejno:

  1. Na serwerze linserv tworzymy nową grupę wspolne i dodajemy do niej użytkowników, którzy będą mieli mieć dostęp do katalogu. Wybierzmy numer grupy na tyle duży, żeby na żadnym z terminali linuksowych nie istniała już grupa o takim numerze. Może to oznaczać taki wpis w pliku /etc/group:

    wspolne:x:1050:kierownik,prezes,nobody,palacz
    Do grupy muszą należeć wszyscy użytkownicy, którzy mają mieć dostęp do katalogu współdzielonego, oraz, dodatkowo, użytkownik z uprawnieniami którego działają demony Samby (czyli zwykle nobody).

  2. Analogicznie, grupę o takiej samej nazwie i numerze tworzymy na wszystkich terminalach linuksowych.

  3. Na serwerze tworzymy odpowiedni katalog:

    mkdir /home/wspolne
    chown nobody.wspolne /home/wspolne
    chmod 2755 /home/wspolne

  4. Na wszystkich terminalach linuksowych także tworzymy katalog:

    mkdir /home/wspolne

  5. Na wszystkich komputerach linuksowych (z serwerem włącznie) w pliku /etc/samba/smb.conf ustawiamy parameter workgroup na używaną w sieci nazwę grupy roboczej, np.

    workgroup = WORKGROUP
    Jeżeli jeden z komputerów ma pełnić rolę serwera WINS, to musimy na nim dodać wpis:
    wins support = yes
    Jeżeli pozostałe komputery mają problemy ze znalezieniem serwera WINS, to można dodać im wpis z numerem IP serwera, np.
    wins server = 192.168.1.100

  6. Na serwerze linuksowym modyfikujemy plik /etc/samba/smb.conf, aby obecne były następujące wpisy:

    [global]
    	; zmiana ustawien domyslnych
    	  security = share
    	  load printers = no ; bonus
    
    ; dodana nowa sekcja
    [wspolne]
    	  comment = Katalog wspoldzielony
    	  path = /home/wspolne
    	  browseable = yes
    	  writeable = yes
    	  public = yes
    	  force user = nobody
    	  force group = wspolne
    	  create mode = 0664
    	  directory mode = 0775
    	  force create mode = 0664
    	  force directory mode = 0775
    	  hosts deny = ALL
    	  hosts allow = 192.168.1.21 192.168.1.22 192.168.1.2 192.168.1.3
    Ostatnia linia to przykładowa lista komputerów, którym pozwalamy na dostęp do naszego katalogu. Można też podać całą podsieć:
    	  hosts deny = ALL
    	  hosts allow = 192.168.1.

  7. Jeżeli używamy jądra 2.4, to na wszystkich komputerach linuksowych dodajemy do pliku /etc/fstab linię:

    //linserv/wspolne /home/wspolne smbfs rw,gid=1050,fmask=664,dmask=775, \
    	password= 0 0
    Zamiast 1050 wstawiamy oczywiście numer grupy 'wspolne'. Nazwa komputera linserv musi też być poprawnie tłumaczona na IP (można dodać wpis do /etc/hosts).

    Niestety, jeżeli używamy jądra 2.6, to po wykonaniu tego oraz opisanych niżej kroków nasz katalog prawdopodobnie będzie niedostępny dla użytkowników zalogowanych bezpośrednio na serwerze (programy chcące uzyskać dostęp do katalogu będą się "przywieszały"), a w logach otrzymamy komunikaty typu:

    Dec 11 00:33:35 linserv kernel: smb_add_request: request [c50f2e80, mid=17] \
    	timed out!
    Radą na to jest upgrade samby (w Debianie unstable pakiet co najmniej z wersją 3.0.7-2) i użycie nowej wersji protokołu SMB o nazwie CIFS (Common Internet File System). Oznacza to następujące wpisy w pliku /etc/fstab na serwerze i terminalach linuksowych:
    //linserv/wspolne /home/wspolne cifs rw,gid=1050,file_mode=0664,dir_mode=0775, \
    	password= 0 0

  8. Jeżeli dotychczas tego nie zrobiliśmy, to należy zrestartować Sambę, aby zostały uwzględnione zmiany poczynione przez nas w plikach konfiguracyjnych:

    /etc/init/samba restart

  9. Na komputerach linuksowych montujemy nasz nowy katalog za pomocą komendy:

    mount /home/wspolne
    Jest to czynność jednorazowa - katalog będzie zawsze domyślnie montowany podczas startu systemu.

  10. W systemie Debian konieczna jest też zmiana w pliku /etc/profile wywołania 'umask 022' na 'umask 002'. Prawidłowe prawa dostępu do wspólnego katalogu będą mieli tylko użytkownicy zalogowani po tej zmianie.

  11. Na koniec możemy na komputerach linuksowych utworzyć w katalogach domowych użytkowników linki symboliczne do katalogu /home/wspolne, a na komputerach windowsowych zmapować zasób //linserv/wspolne jako nowy dysk.