Sr-10-lab-1.0: Różnice pomiędzy wersjami
Lab 10 - Samba (1) |
(Brak różnic)
|
Aktualna wersja na dzień 20:03, 1 wrz 2006
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 konfiguracyjnegosmb.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
. Trybuser
(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. Trybshare
należy wykorzystać w przypadku braku takich kont lub przy dostępie publicznym (bez weryfikacji hasła). Trybyserver
idomain
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
ahosts deny
, to zawsze priorytet mahosts 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 dyskH:
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
lubdomain
.
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ówlog file
.
Dodatkowe informacje
- Pomoc systemowa
man
:samba(7)
,smb.conf(5)
,smbd(8)
,nmbd(8)
,smbmount(8)
,printcap(5)
,winbind(8)
. - Strona WWW:
http://www.samba.org/
- NetBIOS: RFC 1001, RFC 1002.
- Using Samba [ECBK03]. Książka dołączona do dokumentacji pakietu Samba.
Zadania
- Zlokalizuj zdalne zasoby udostępniane w sieci lokalnej poprzez uruchomienie serwera
nmbd
i korzystając z programówfindsmb
orazsmbclient
. - Wykonaj dostęp do zdalnego zasobu za pośrednictwem programu
smbclient
, przeglądarki Konqueror oraz poprzez montowanie zdalnego katalogu. - Skonfiguruj i uruchom serwer udostępniający przykładowy katalog do zapisu. Zweryfikuj możliwość dokonywania modyfikacji w tym katalogu.
- 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.
- Ogranicz dostępność katalogu dla wybranych komputerów, użytkowników lub grup sieciowych.
- 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.
- Przetestuj działanie programu zarządzającego
swat
.