Personal tools

Sr-10-lab-1.0

From Studia Informatyczne

Spis treści

Pakiet Samba

Wprowadzenie

Pakiet Samba jest oprogramowaniem umożliwiającym integrację systemów Unix i Windows. Samba implementuje protokół SMB wykorzystywany m.in. w sieciach Microsoft Network. Poprawne skonfigurowanie pakietu umożliwia:

  • udostępnianie katalogów i drukarek z systemu Unix,
  • dostęp w systemie Unix do katalogów i drukarek udostępnionych przez inne systemy,
  • wykorzystanie protokołu komunikacyjnego WinPopup w systemach Unix,
  • zarządzanie domeną Windows NT z poziomu systemu Unix,
  • autoryzacja użytkowników za pośrednictwem istniejącego kontrolera domeny NT.

Na Sambę składają się m.in. następujące programy:

smbd 
demon udostępniający lokalne pliki i drukarki. Konfiguracja demona zapisana jest w pliku smb.conf.
nmbd 
demon obsługujący protokół NetBIOS — usługę serwisu nazw, umożliwiającą również przeglądanie list dostępnych zasobów. nmbd może pracować jako serwer WINS (Windows Internet Name Server).
smbclient 
dostarcza prostego interfejsu dostępu do współdzielonych zasobów. Działa na zasadzie programu FTP. Umożliwia dostęp do zdalnych plików i drukarek.
testparm 
narzędzie pomocnicze wspomagające administratora w konfigurowaniu demona smbd. Sprawdza poprawność pliku konfiguracyjnego smb.conf.
smbstatus 
umożliwia śledzenie bieżących połączeń lokalnego serwera.

Pakiet Samba rozprowadzany jest na zasadach licencji GNU, a więc jest darmowym i publicznie dostępnym oprogramowaniem.

Klient protokołu SMB

Dostęp do zdalnych zasobów udostępnianych za pośrednictwem protokołu SMB wymaga wstępnego pobrania informacji o tych zasobach. Pierwszym krokiem do tego celu jest przeszukanie lokalnej podsieci w poszukiwaniu dostępnych serwerów:

# findsmb
IP ADDR         NETBIOS NAME    WORKGROUP/OS/VERSION
-------------------------------------------------------------------
192.168.0.45    GALIO           [TEST] [Windows 5.0] [Windows 2000]
192.168.0.1     UNIXLAB        +[TEST] [Unix] [Samba 2.2.8a]

Następnym krokiem jest bezpośredni kontakt z serwerami w celu pobrania listy udostępnianych zasobów. Realizację tego zadania umożliwia program smbclient(8), będący interaktywnym klientem protokołu SMB. Wyświetlenie zasobów serwera unixlab można więc wykonać następująco:

# smbclient -L unixlab
added interface ip=192.168.0.1 bcast=192.168.0.255 nmask=255.255.255.0
Password: ********
Domain=[TUX-NET] OS=[Unix] Server=[Samba 2.2.8a]
 
        Sharename      Type      Comment
        ---------      ----      -------
        IPC$           IPC       IPC Service (Samba 2.2.8a)
        ADMIN$         Disk      IPC Service (Samba 2.2.8a)
        hp             Printer   HP LaserJet 5MP Postscript
        pub            Disk      Katalog testowy
 
        Server               Comment
        ---------            -------
        DCS-CSL              Samba 2.2.8a
 
        Workgroup            Master
        ---------            -------
        TUX-NET

Informacje podzielone są na 3 grupy: zasoby udostępniane przez serwer, listę znanych serwerów i listę znanych grup roboczych lub domen. Zasoby, których nazwy kończą się znakiem "$" są zasobami systemowymi. W powyższym przykładzie serwer unixlab udostępnia drukarkę pod nazwą "hp" oraz katalog pod nazwą "pub". Podczas pobierania informacji z serwera pojawia się pytanie o hasło. Puste hasło oznacza dołączenie do serwera w trybie anonimowym. Przełącznik -N umożliwia w tym trybie wyłączenie prośby o hasło.

Identyfikacja zdalnych zasobów odbywa się podobnie jak w systemach Windows, np. pełna nazwa katalogu pub może być zapisana jako:

\\unixlab\pub

Znak "\" w interpreterach poleceń systemów Unix ma znaczenie specjalne, stąd musi on być zapisany podwójnie. Możliwe jest również stosowanie znaku "/". Dostęp do zasobu wymaga podłączenia się do niego, co można również zrealizować komendą smbclient:

# smbclient //unixlab/pub
added interface ip=192.168.0.1 bcast=192.168.0.255 nmask=255.255.255.0
Password: ********
Domain=[TUX-NET] OS=[Unix] Server=[Samba 2.2.8a]
smb: \> help
...

Podłączenie do zasobu oznacza przejście do interaktywnego trybu pracy, w którym wykonywane są komendy podobne do tych, z usługi FTP. Oto lista ważniejszych komend programu smbclient:

help 
wyświetlenie podręcznej pomocy,
md/mkdir 
utworzenie katalogu,
rd/rmdir 
usuwanie katalogu,
rm 
usuwanie pliku,
get 
pobieranie pliku,
mget 
pobieranie grupy plików,
put 
wstawienie pliku na serwer,
mput 
wstawienie grupy plików,
prompt 
włączenie/wyłączenie potwierdzania przesyłania plików,
quit 
wyjście,
recurse 
przełączenie z/do trybu rekurencyjnego wykonywania komend,
setmode 
odpowiednik DOS-owej komendy attrib do manipulacji atrybutami pliku.

Obsługa protokołu SMB jest wbudowana w wiele aplikacji. Przykładem może być domyślna przeglądarka konqueror ze środowiska graficznego KDE. Jako adres URL można tam wpisać odwołanie do zasobu z serwera SMB:

smb://unixlab/pub

Powoduje to zestawienie połączenia do serwera, pobranie nazwy użytkownika i hasła, a następnie wyświetlenie zawartości zdalnego katalogu.

System Linux obsługę protokołu SMB ma wbudowaną w jądro systemu, co pozwala dołączyć zdalny katalog do lokalnej struktury podobnie jak to było wykonywane w przypadku systemu plików NFS:

# mount -t smbfs -o username=wojtek //unixlab/pub /mnt

Podczas dołączania zdalnego katalogu pojawi się pytanie o hasło, które mogłoby być przekazane dodatkową opcją password w linii poleceń. Pełna lista dostępnych opcji znajduje się na stronie pomocy systemowej smbmount(8).

Konfiguracja serwera

Konfiguracja serwera Samba skupiona jest wokół głównego pliku smb.conf zlokalizowanego bezpośrednio w katalogu /etc lub w wydzielonym podkatalogu /etc/samba. Plik ten składa się z sekcji zawierających parametry. Każda sekcja rozpoczyna się od nazwy umieszczonej w nawiasach kwadratowych i kończy się wraz z początkiem nowej sekcji. Parametry mają składnię nazwa = wartość. Puste linie i linie zaczynające się od "#" lub ";" są ignorowane (komentarze). Nazwy sekcji i parametrów nie uwzględniają rozróżnienia na duże i małe litery. Linijka kończąca się znakiem "\" jest kontynuowana w następnej. Wartości logiczne reprezentowane są poprzez napisy: 0, 1, yes, no, true, false.

Istnieją trzy specjalne sekcje: [global], [homes] i [printers]. W sekcji [global] znajdują się ustawienia dotyczące całego serwera. Jeżeli jakiś parametr może być wykorzystany zarówno w opisie konkretnego zasobu jak i w sekcji globalnej, to umieszczenie jego w sekcji globalnej powoduje ustawienie wartości domyślnej dla wszystkich pozostałych sekcji.

Jeżeli w pliku smb.conf jest umieszczona sekcja [printers] oznacza to, że użytkownicy mają dostęp do wszystkich lokalnych drukarek skonfigurowanych w pliku /etc/printcap (zobacz printcap(5)).

Umieszczenie sekcji [homes] w pliku smb.conf powoduje automatyczne utworzenie oddzielnych sekcji udostępniających katalogi domowe dla każdego lokalnego użytkownika systemu Unix.

Zmienne specjalne

Wartości poszczególnych parametrów konfiguracyjnych mogą się odwoływać do następujących zmiennych specjalnych:

%D 
Nazwa grupy roboczej lub domeny.
%L 
Nazwa komputera do której odwołuje się klient.
%m 
Nazwa komputera w NetBIOS-ie.
%h 
Nazwa komputera (zwracana poleceniem hostname).
%M 
Nazwa internetowa komputera.
%S 
Nazwa zasobu, do którego odwołuje się klient.
%u 
Nazwa bieżąca użytkownika.
%U 
Żądana nazwa użytkownika.
%P 
Ścieżka do zasobu.
%a 
Architektura systemu (Samba, WfW, WinNT, Win95).
%I 
Adres IP komputera.
%T 
Bieżąca data i czas.

Program administracyjny swat

Program swat jest serwerem usługi WWW umożliwiającym graficzne zarządzanie serwerem Samba. Uruchomienie usługi wymaga dodania odpowiednich zapisów do konfiguracji serwerów inetd lub xinetd. W przypadku serwera inetd należy dodać następującą linię do pliku /etc/inetd.conf:

swat stream  tcp nowait.400  root  /usr/sbin/swat  swat

W przypadku serwera xinetd należy dodać plik konfiguracyjny /etc/xinetd.d/swat z następującą zawartością:

service swat
{
   socket_type     =  stream
   protocol        =  tcp
   wait            =  no
   user            =  root
   server          =  /usr/sbin/swat
   only_from       =  127.0.0.1
   log_on_failure  += USERID
   disable         =  no
}

Po rekonfiguracji należy poinformować serwery o zmianie wykonując jedną z komend:

# /etc/init.d/inetd reload
# /etc/init.d/xinetd reload

Dostęp do aplikacji swat jest możliwy poprzez przeglądarkę pod adresem http://localhost:901/.

Polecenie smbstatus

Program smbstatus wyświetla informację o wykorzystaniu udostępnianych zasobów. Dostępne przełączniki:

-b 
wydruk skrócony
-d 
wydruk rozszerzony
-p 
lista działających procesów smbd związanych z obsługą klienta

Program testparm służy do sprawdzenia poprawności zapisu konfiguracji z pliku /etc/smb.conf.

Samba a sprawa polska

W sekcji [global] można umieścić dodatkowe opcje odpowiedzialne za konwersję kodowania znaków:

[global]
   ...
   unix charset = UTF-8
   display charset = ISO8859-2
   dos charset = CP852

Opis parametrów konfiguracyjnych

Przy nazwie każdego parametru umieszczono literę G — oznaczającą, że dany parametr może być użyty jedynie w sekcji [global] lub S — oznaczającą, że parametr może być wykorzystany zarówno do opisu zasobu jak i w sekcji [global].

Parametry ogólne
netbios name (G) 
Nazwa serwera. Domyślnie przyjmowana jest nazwa zwracana poleceniem hostname.
server string (G) 
Opis serwera: %v oznacza wersję Samby, %h — nazwę hostname.
character set (G) 
Standard kodowania wykorzystywany przez serwer, np. iso8859-2.
client code page (G) 
Strona kodowa systemu plików DOS--a. Numer strony kodowej można sprawdzić w DOS--ie poleceniem chcp. Dla języka polskiego należy ustawić stronę kodową 852.
max connections (S) 
Maksymalna liczba współbieżnych połączeń klientów. Zero oznacza brak ograniczeń.
time server (G) 
Wskazuje, że proces nmbd będzie serwerem czasu dla systemów Windows.
Opis zasobu
path (S) 
Ścieżka określająca zasób. Dla drukarek jest to nazwa katalogu, do którego będą zapisywane zlecenia wydruku (ang. spool).
admin users (S) 
Lista administratorów usług. Wszyscy użytkownicy wymienieni na tej liście będą mogli wykonywać wszelkie operacje dotyczące danej usługi, bez względu na uprawnienia.
browsable (S) 
Włącza widoczność zasobu na liście dostępnych zasobów.
writable (S) 
Zezwala na zapis do katalogu.
printable (S) 
Określa zasób jako drukarkę.
comment (S) 
Opis widoczny na liście zasobów.
Prawa dostępu
security (G) 
Sposób weryfikacji praw dostępu do zasobów. Możliwe wartości: share, user, server, domain. Tryb user (domyślny) może być stosowany jeżeli w systemie Unix mają swoje konta użytkownicy innych systemów ubiegających się o dostęp. Tryb share należy wykorzystać w przypadku braku takich kont lub przy dostępie publicznym (bez weryfikacji hasła). Tryby server i domain oznaczają, że Samba kontaktuje się z kontrolerem domeny w celu uwierzytelnienia użytkownika.
public (S) 
Zasób publiczny nie wymagający hasła podczas dostępu.
hosts allow (S) 
Lista komputerów/sieci, które mogą korzystać z zasobu.
hosts deny (S) 
Lista komputerów/sieci, dla których zasób jest niedostępny. Jeżeli występują konflikty pomiędzy hosts allow a hosts deny, to zawsze priorytet ma hosts allow.
create mask (S) 
Maska praw, co najwyżej które będą ustawione przy tworzeniu nowych plików:
create mask = 700
force create mode (S) 
Prawa, które zostaną dodane do praw dostępu do nowo tworzonych plików.
directory mask (S) 
Analogicznie do create mask, ale w stosunku do katalogów.
force directory mode (S) 
Analogicznie jak force create mode, ale w odniesieniu do katalogów.
follow symlinks (S) 
Zezwala na przechodzenie do katalogów wskazywanych przez dowiązania symboliczne.
force user (S) 
Wymuszenie zmiany nazwy użytkownika przy dostępie do zasobu.
force group (S) 
Wymuszenie zmiany nazwy grupy przy dostępie do zasobu.
guest account (S) 
Konto użytkownika anonimowego.
hide dot files (S) 
Prezentacja plików zaczynających się od kropki jako plików ukrytych.
hide files (S) 
Lista plików, które powinny zostać wyświetlone jako ukryte:
hide files = /.*/Trash/*~/
only user (S) 
Zabrania logowania użytkowników spoza listy.
read list (S) 
Lista użytkowników, którzy mają tylko prawo do odczytu, bez względu na ustawienie parametru writable. Można dołączać całe grupy za pomocą notacji @grupa. Przykład:
read list = john, @students
invalid users (S) 
Lista użytkowników niedopuszczonych do zasobu. Nazwa rozpoczynająca się od @ reprezentuje grupę sieciową lub grupę uniksową, jeżeli nie znaleziono odpowiedniej grupy sieciowej. Nazwa rozpoczynająca się od + reprezentuje tylko i wyłącznie grupę uniksową. Nazwa rozpoczynająca się od & reprezentuje tylko i wyłącznie grupę sieciową.
valid users (S) 
Lista użytkowników, którzy mają dostęp do zasobu. Przykład:
valid users = fred, @staff

Jeżeli użytkownik występuje na liście valid users i invalid users, to dostęp do zasobu jest dla niego zabroniony.

Użytkownicy
logon home (G) 
Katalog domowy dla klientów logujących się z systemów Windows. Umożliwia to wykonanie na tych komputerach komendy:
C:\> NET USE H: /HOME
definiującej dysk H: jako wskazujący na katalog domowy. Domyślne ustawienie:
logon home = "\\%N\%U"
logon path (G) 
Katalog z plikami konfiguracyjnymi użytkownika (profil) dla systemów NT/2000/XP. Domyślne ustawienie:
logon path = \\%N\%U\profile
logon script (G) 
Skrypt, który będzie wykonywany po zalogowaniu się do domeny kontrolowanej przez Sambę.
username map (G) 
Plik mapujący nazwy użytkowników protokołu SMB na użytkowników Uniksa. Przykład takiego pliku:
root = admin administrator "Marek Kowalski"
sys = @system
guest = *
domain logons (G) 
Określa serwer jako kontroler domeny (PDC).
encrypt passwords (G) 
Windows od wersji NT 4.0 SP3 oraz Windows 98 i nowsze stosują kodowanie haseł.
password server (G) 
Nazwa serwera, który będzie autoryzował użytkowników. Wymaga również ustawienia parametru security na wartość server lub domain.
Komunikaty WinPopup
message command (G) 
Nazwa komendy, która wyświetli komunikat WinPopup. Przykład:
message command = sh -c 'xedit %s; rm -f %s' &
Komenda powinna natychmiast zwracać sterowanie do systemu. %s reprezentuje plik z wiadomością, %t — adresata, %f — nadawcę.

Wysyłanie komunikatów:

smbclient -M hostname

Należy wprowadzać tekst i zakończyć go poprzez Ctrl--D. Można również informację przekazać przez standardowe wejście:

ps -ax | smbclient -M hostname
Drukarki

Pole path w przypadku drukarek określa katalog, w którym będą tworzone kopie lokalne przesłanych do wydruku plików. Katalog ten powinien być dostępny do zapisu dla wszystkich i mieć ustawiony bit sticky (chmod +t).

load printers (G) 
Parametr określający czy mają być udostępniane wszystkie skonfigurowane lokalnie drukarki (plik /etc/printcap).
printing (S) 
Specyfikuje rodzaj podsystemu drukowania. Komenda ta ustawia również wartości domyślne dla ustawień: print command, lpq command, lprm command.
print command (S) 
Komenda, która zostanie użyta do wydrukowania przesłanego przez klienta pliku. Można wykorzystać następujące zmienne specjalne: %s reprezentuje nazwę lokalnej kopii zleconego do wydruku pliku, %f — to ta sama nazwa, ale bez pełnej ścieżki, %p — to nazwa drukarki.
lpq command (S) 
Komenda wykonywana w celu uzyskania statusu drukarki.
lprm command (S) 
Komenda usuwająca zadanie drukowania z kolejki. Można wykorzystać specjalne zmienne: %p — nazwa drukarki, %j — numer zlecenia. Przykład:
lprm command = /usr/bin/lprm -P %p %j
Diagnostyka
log level (G) 
Stopień szczegółowości informacji diagnostycznych zapisywanych w pliku log.
log file (G) 
Nazwa pliku, do którego zapisywane są informacje diagnostyczne.
syslog (G) 
Określa stopień szczegółowości komunikatów przekazywanych do systemowej usługi syslog
syslog only (G) 
Wskazuje, że komunikaty diagnostyczne powinny być przekazywane tylko do usługi syslog, czyli nie do plików log file.

Dodatkowe informacje

  1. Pomoc systemowa man: samba(7), smb.conf(5), smbd(8), nmbd(8), smbmount(8), printcap(5), winbind(8).
  2. Strona WWW: http://www.samba.org/
  3. NetBIOS: RFC 1001, RFC 1002.
  4. Using Samba [ECBK03]. Książka dołączona do dokumentacji pakietu Samba.

Zadania

  1. Zlokalizuj zdalne zasoby udostępniane w sieci lokalnej poprzez uruchomienie serwera nmbd i korzystając z programów findsmb oraz smbclient.
  2. Wykonaj dostęp do zdalnego zasobu za pośrednictwem programu smbclient, przeglądarki Konqueror oraz poprzez montowanie zdalnego katalogu.
  3. Skonfiguruj i uruchom serwer udostępniający przykładowy katalog do zapisu. Zweryfikuj możliwość dokonywania modyfikacji w tym katalogu.
  4. Sprawdź poprawność odwzorowania polskich znaków w nazwach plików. Pliki tworzone po stronie systemu Windows powinny być poprawnie widziane po stronie systemu Unix i odwrotnie.
  5. Ogranicz dostępność katalogu dla wybranych komputerów, użytkowników lub grup sieciowych.
  6. Zmień konfigurację praw dostępu dla nowotworzonych plików, tak aby członkowie grupy mieli możliwość zapisu, a pozostali użytkownicy nie posiadali żadnych praw.
  7. Przetestuj działanie programu zarządzającego swat.