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.
nmbdmoż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
attribdo 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
smbdzwią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:
%voznacza 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
nmbdbę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. Trybsharenależy wykorzystać w przypadku braku takich kont lub przy dostępie publicznym (bez weryfikacji hasła). Trybyserveridomainoznaczają, ż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.
hostsdeny(S)- Lista komputerów/sieci, dla których zasób jest niedostępny. Jeżeli występują konflikty pomiędzy
hosts allowahosts 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
securityna wartośćserverlubdomain.
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.%sreprezentuje 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:
%sreprezentuje 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
nmbdi korzystając z programówfindsmborazsmbclient. - 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.