Kompleksowa obsługa informatyczna

            Nowoczesne rozwiązania serwerowe

Konfiguracja serwera plików SAMBA

Poradniki
W tym artykule przedstawimy prostą, przykładową konfigurację serwera samba.

Sekcja GLOBAL

[global]
        workgroup = NAZWA_GRUPY_ROBOCZEJ
        netbios name = SAMBASERVER

        os level = 255
        preferred master = Yes
        local master = Yes

        wins support = Yes

        name resolve order = lmhosts wins hosts bcast
Powyżej ustawiliśmy nazwę grupy roboczej oraz nazwę naszego serwera. Następnie ustawiony został os level na najwyższą możliwą wartość, a także włączone zostały opcje local master i preferred master. Wszystkie 3 parametry powodują, że nasz serwer ma większą szansę stać się głównym browserem sieci. Włączyliśmy obsługę usługi wins, która odpowiada za tłumaczenie nazw na adresy IP w protokole NetBIOS. Ostatnia linijka określa kolejność odpytywanie poszczególnych usług w celu 'przetłumaczenia' nazwy hosta na adres.
        time server = Yes
        load printers = No
W tych linijkach włączyliśmy dodatkowo serwer czasu (z którym będą mogły synchronizować się komputery w sieci np. za pomocą polecenia net time w Windowsie lub ntpdate w Linuksie) oraz zadeklarowaliśmy, że samba nie będzie obsługiwać żadnych drukarek.
        dos charset = 852
        unix charset = ISO8859-2
Tu skonfigurowaliśmy odpowiednie mapowania polskich znaków. Linie te są konieczne, aby uniknąć 'krzaków' w nazwach plików i katalogów.
        create mask = 0771
        force create mode = 0460
        security mask = 0770
        directory mask = 0770
        force directory mode = 0770
        directory security mask = 0770
        map archive = yes
        map system = no
        map hidden = no
Kolejne linie definiują uprawnienia z jakimi powinny tworzyć się pliki i katalogi. W naszej konfiguracji wszyscy użytkownicy będą należeć do jednej głownej grupy (np.: pracownicy), konieczne jest zatem, aby pliki i katalogi miały uprawnienia zezwalające na pełen dostęp nie tylko dla własciciela, ale i dla całej grupy. W innym wypadku żaden pracownik nie byłby w stanie zmienić pliku utworzonego przez kogoś innego.
        security = user
        guest ok = no
        encrypt passwords = true
        interfaces = 192.168.1.2/255.255.255.0 127.0.0.1/255.0.0.0 
        bind interfaces only = yes
        hosts allow = 192.168.1. 127.0.0.1 
Kolejne wpisy konfigurują kwestie bezpieczeństwa. Parametr security ustawiony na user oznacza, iż wszelkie uprawnienia będą nadawane w zależności od zalogowanego użytkowanika. W kolejnych liniach blokujemy możliwość zalogowania na konto goscia, szyfrujemy hasła oraz konfigurujemy adresy sieciowe pod którymi możliwy będzie dostęp do danych. Ten ostatni krok jest szczególnie istotny, gdyż chyba nigdy nie chcemy, aby nasze dane były dostępne do przeglądania na interfejsach podpiętych bezpośrednio do internetu.
        deadtime = 30
        locking = yes
        blocking locks = no
Ostatnie linie określają po jakim czasie nieaktywne połączenie ma zostać przerwane oraz mechanizm locków przy konkurencyjnym dostępie do plików z kilku stanowsik jednocześnie. Parametr locking prawie zawsze powinien być włączony, gdyż jego wyłączenie spowoduje, że klienci będą w stanie otworzyć na róznych komputerach ten sam plik w trybie do zapisu. Jest to prosta droga do utraty integralności danych. Parametr blocking locks określa z kolei czy serwer przy próbie otwarcia zablokowanego pliku powinien odmówić dostępu do pliku od razu (jak w naszym przykładzie) czy też poczekać kilka chwil i sprobować ponownie.

Udziały

Zdefiniujmy 3 przykładowe udziały. Jest to najprostsza możliwa wersja, w której określamy jedynie nazwę udziału, ścieżkę do katalogu, w którym znajdują się dane oraz grupy użytkowników, którzy mają mieć do nich dostęp. Ostatni ze zdefiniowanych tu zasobów będzie używany do wymiany dokumentów między pracownikami.
[ksiegowosc]
        path = /data/ksiegowosc
        valid users = @ksiegowosc, @prezesi
        read only = No

[marketing]
        path = /data/marketing
        valid users = @marketing, @prezesi
        read only = No

[strefa wymiany]
        path = /data/strefa_wymiany
        valid users = @pracownicy
        read only = No
Następnie zdefiniujmy udziały do katalogów domowych. Każdy użytkownik będzie miał dostęp tylko do swojego katalogu domowego (tożsamego z systemowych $HOME). Dodatkowo użytkownicy w grupie prezesi mogą podglądać co pracownicy trzymają na serwerze.
[Katalog domowy]
        path = %H
        valid users = %U 
        read only = No

[Katalogi domowe]
        path = /data/katalogi_domowe
        valid users = @prezesi
        read only = no
Poniżej nieco bardziej zaawansowany przykład konfiguracji zasobu. Widzimy w nim nadpisanie zdefiniowanych w sekcji global ustawień dotyczących uprawnień. Dodatkowo włączone zostały oplocki, dzięki czemu symfonia działa stabilniej.
[symfonia]
    path = /data/symfonia
    valid users = @prezesi, @symfonia
    read only = No
    oplocks = No
    level2 oplocks = No
    force user = psql
    force group = pvsw
    create mask = 0666
    directory mask = 0777

Dodawanie użytkowników

Po takim skonfigurowaniu serwera przyda nam się jeszcze skrypt do dodawania nowych użytkowników i tworzenia dla nich odpowiednich katalogów (domowego oraz w strefie wymiany, w której każdy użytkownik posiadał będzie swój odrębny katalog). Prosty skrypt może wyglądać jak poniżej:
#!/bin/sh

if [[ -z "$1" ]]; then
        echo "Podaj login"
        exit
fi

LOGIN=$1

HDIR=/data/katalogi_domowe/$LOGIN
WDIR=/data/strefa_wymiany/$LOGIN

# utworzenie konta systemowego i samby
useradd -d /data/katalogi_domowe/$LOGIN -g pracownicy -s /bin/false $LOGIN
smbpasswd -a $LOGIN


# zalozenie katalogow
mkdir $HDIR $WDIR

# odpowiednie uprawnienia
chmod 770 $WDIR $HDIR
chown $LOGIN $HDIR
chgrp prezesi $HDIR
chgrp pracownicy $WDIR
Skrypt oczekuje tylko jednego argumentu - nazwy nowego użytkownika. Tworzy on użytkownika systemowego z odpowiednim katalogiem domowym oraz shellem ustawionym na /bin/false (co zapobiegnie możliwości zalogowania się na serwer np przez protokół ssh). Następnie tworzony jest użytkownik samby i jego katalogi. W ostatnim kroku katalogom nadawe są odpowiednie do powyższej konfiguracji uprawnienia. Katalog domowy należy do grupy prezesi, co spowoduje, że tylko oni będą mogli go przeglądać (choć w zasadzie i tak nikt inny nie byłby do tego zdolny dzięki deklaracji valid users przy tym udziale, ale dodajemy tu kolejny poziom zabezpieczenia). Katalog w strefie wymiany należy natomiast do grupy pracownicy, aby umożliwić dowolnemu pracownikowi 'wrzucenie' do niego plików.

Po dodaniu pracownika należy przypisać go ręcznie do pozostałych wymaganych grup na przykład poleceniem vigr.