smbd
8

# smbd

serwer dostarczający klientom usług SMB/CIFS

          smbd
          -D
          -a
          -o
          -P
          -h
          -V
          -d poziomdebugowania
          -l plik logu
          -p numer portu
          -O opcje gniazda
          -s plik konfiguracyjny

## OPIS

Ten program jest częścią pakietu Samba .

`smbd` jest demonem serwera który dostarcza usług współdzielenia plików i drukarek do klientów Windows. Serwer dostarcza usługi plikowe i drukarkowe do klientów używając protokołu SMB (lub CIFS). Jest on kompatybilny z protokołem LanManager i może obsługiwać klientów LanManager. Zaliczają się do nich MSCLIENT 3.0 dla DOS, Windows for Workgroups, Windows 95, Windows NT, OS/2, DAVE dla Macintosh i smbfs dla Linux.

Wyczerpujący opis usług które serwer może dostarczyć jest podany na stronie podręcznika pliku konfiguracyjnego kontrolującego atrybuty tych usług (zobacz `smb.conf(5)` . Ta strona podręcznika nie będzie opisywać usług, lecz skoncentruje się na administracyjnych aspektach działania serwera.

Zauważ proszę, że istnieją znaczące implikacje dotyczące bezpieczeństwa przy uruchamianiu tego serwera, i strona `smb.conf(5)` powinna być traktowana jako obowiązkowa do przeczytania przed przeprowadzaniem instalacji.

Sesja jest tworzona za każdym razem, gdy klient tego zażąda. Każdy klient otrzymuje kopię serwera na każdą sesję. Ta kopia wówczas obsługuje wszystkie połączenia wykonane przez klienta podczas tej sesji. Gdy wszystkie połączenia z klientem są zamknięte, kopia serwera dla tego klienta kończy swoje działanie.

Plik konfiguracyjny i każdy plik który on włącza (a właściwie "dołącza", przyp.tłum.) są automatycznie przeładowywane w każdej minucie, jeśli się zmieniły. Możesz wymusić przeładowanie wysyłając serwerowi sygnał SIGHUP. Przeładowanie pliku konfiguracyjnego nie będzie miało wpływu na połączenia do jakiejkolwiek usługi które są już ustanowione. Albo użytkownik będzie musiał odłączyć się od usługi, albo smbd będzie musiał być zabity (killed) i zrestartowany.

## OPCJE

-D

  Jeśli określony, ten parametr powoduje, że serwer operuje jako demon. To jest, odłącza siebie samego (od konsoli, przyp.tłum.) i uruchamia się w tle, odbierając żądania na odpowiednim porcie. Włączanie serwera jako demona jest zalecanym sposobem uruchamiania `smbd` dla serwerów, które dostarczają większych niż "dorywczych" usług plikowych i drukarkowych.

  Domyślnie, serwer NIE będzie działał jako demon.

-a

  Jeśli ten parametr jest określony, każde nowe połączenie będzie dopisywało informacje do pliku logu. Tak jest domyślnie.

-o

  Jeśli ten parametr jest określony, pliki logu będą nadpisywane podczas otwarcia. Domyślnie, pliki logu będą dopisywane.

-P

  Opcja pasywna. Powoduje, że smbd nie generuje w sieci żadnego ruchu. Używane przez developerów tylko do debugowania.

-h

  Wyświetla informację pomocniczą (użycie) o `smbd`.

-V

  Wyświetla numer wersji dla `smbd`.

-d poziomdebugowania

  poziomdebugowania jest liczbą całkowitą od 0 do 10. Domyłlną wartoącią tego parametru, jeśli nie jest określony, jest zero.

  Im większa jest to wartość, tym więcej detali będzie logowanych w plikach logu na temat aktywności serwera. Na poziomie 0, tylko krytyczne błędy i poważne ostrzeżenia będą rejestrowane. Poziom 1 jest rozsądnym poziomem dla codziennego działania - generuje małą ilość informacji na temat wykonywanych operacji.

  Poziomy ponad 1 będą generować znaczne ilości informacji logu i powinny być używane tylko podczas śledzenia problemu. Poziomy ponad 3 są zaprojektowane tylko dla użytku developerów i generują OGROMNE ilości danych logu, w większości ekstremalnie zagadkowych.

  Zauważ, że określanie tego parametru tutaj spowoduje, że będzie on nadrzędny w stosunku do parametru log level w pliku smb.conf(5).

-l plik logu

  Jeśli określony, plik logu określa nazwę pliku logu do którego komunikaty informacyjne i debugowe z działającego serwera będą logowane. Wygenerowany plik logu nie jest nigdy usuwany przez serwer, aczkolwiek jego rozmiar może być kontrolowany przez opcję max log size w pliku smb.conf(5). Domyślna nazwa pliku logu jest określana w czasie kompilacji.

-O opcje gniazda

  Zobacz parametr socket options w pliku smb.conf(5) żeby dowiedzieć się szczegółów.

-p numer portu

  numer portu jest dodatnią wartością całkowitą. Domyślną wartością tego parametru, jeśli nie jest określony, jest 139.

  Ta liczba jest numerem portu który będzie użyty podczas nawiązywania połączeń z serwerem z oprogramowania klienta. Standardowym (ogólnie znanym) numerem portu dla SMB poprzez TCP jest 139, stąd wartość domyślna. Jeśli chciałbyś uruchomić serwer jako zwykły użytkownik zamiast root'a, większość systemów będzie wymagać od ciebie użycia numeru portu większego niż 1024 - poproś administratora systemu o pomoc, jeśli jesteś w tej sytuacji.

  Żeby serwer był użyteczny dla większości klientów, jeśli skonfigurujesz go na port inny niż 139, będziesz wymagał usługi przekierowania portu na porcie 139, czego detale są nakreślone w `rfc1002.txt` sekcja 4.3.5.

  Ten parametr nie jest normalnie określany z wyjątkiem powyższej sytuacji.

-s <plik konfiguracyjny>

  Określony plik zawiera detale konfiguracyjne wymagane przez serwer. Informacje w tym pliku zawierają informacje specyficzne dla serwera takie, jak którego pliku `printcap` użyć, jak również opisy wszystkich usług które serwer ma dostarczać. Zobacz smb.conf(5) aby dowiedzieć się więcej. Domyżlna nazwa pliku konfiguracyjnego jest determinowana w czasie kompilacji.

## PLIKI

`/etc/inetd.conf`

  Jeśli serwer ma być uruchamiany przez meta-demona inetd, ten plik musi zawierać odpowiednią informację startową dla meta-demona. Zobacz niżej sekcję INSTALACJA.

`/etc/rc`

  (lub jakikowiek skrypt inicjalizacyjny którego używa twój system).

  Jeśli uruchamiasz serwer jako demona przy starcie, ten plik będzie potrzebował zawierać odpowiednią sekwencję startową dla serwera. Zobacz niżej sekcję INSTALACJA.

`/etc/services`

  Jeśli uruchamiasz serwer przez meta-demona `inetd`, ten plik musi zawierać mapowanie nazwy usługi (np. netbios-ssn) na port usługi (np. 139) i typ protokołu (np. tcp). Zobacz niżej sekcję INSTALACJA.

`/usr/local/samba/lib/smb.conf`

  To jest domyślna lokalizacja pliku konfiguracyjnego serwera smb.conf. Inne powszechne miejsca w których system instaluje ten plik to `/usr/samba/lib/smb.conf` i `/etc/smb.conf`.

  Ten plik opisuje wszystkie usługi które serwer ma udostępniać klientom. Zobacz smb.conf(5) aby uzyskać więcej informacji.

## OGRANICZENIA

W niektórych systemach `smbd` nie może zmieniać uid z powrotem na root'a po wywołaniu setuid(). Takie systemy są nazywane systemami uid "trapdoor" ("klapa", przyp.tłum.) Jeśli masz taki system, nie będziesz w stanie podłączyć się z klienta (takiego jak PC) jako dwóch różnych użytkowników jednocześnie. Próby połączenia drugiego użytkownika będą w rezultacie dawały "brak dostępu" (ang. access denied) lub podobne.

## ZMIENNE ŚRODOWISKOWE

`PRINTER`

  Jeśli żadna nazwa drukarki nie jest określona dla usług drukowalnych, większość systemów użyje wartości tej zmiennej (lub "lp" jeśli ta zmienna nie jest zdefiniowana) jako nazwy drukarki do wykorzystania. Nie jest to jednak specyficzne dla serwera.

## INSTALACJA

Lokalizacja serwera i jego pliki wspierające są w gestii indywidualnych administratorów systemów. W tej sytuacji, dalej są tylko sugestie.

Zalecane jest, aby oprogramowanie serwera było instalowane w hierarchii katalogu `/usr/local/samba`, w katalogu odczytywalnym (z prawem do odczytu, a nie czytelnym, przyp.tłum.) przez wszystkich, zapisywalnym tylko przez root'a. Sam program serwera powinien być wykonywalny przez wszystkich, jako że użytkownicy mogą chcieć uruchamiać serwer samodzielnie (w tym przypadku będzie on oczywiście działał z ich uprawnieniami). Serwer NIE powinien być ustawiony na setuid. W niektórych systemach może być warto ustawić w smbd setgid dla pustej grupy. Jest tak, ponieważ niektóre systemy mogą mieć dziurę w zabezpieczeniach w ramach której do powstającego procesu demona może zostać dołączony użytkownik z debuggerem. Ustawienie pliku smbd na setgid na pustą grupę może zapobiec wykorzystaniu tej dziury. Dziura ta i sugerowana poprawka została potwierdzona tylko na starych wersjach (pre-kernel 2.0) Linuxa w czasie, gdy to było pisane. Możliwe, że istnieje ona tylko w Linuxie, ponieważ testowanie na innych systemach, jak dotąd, pokazało że są odporne.

Pliki logu serwera powinny być wstawione do katalogu odczytywalnego i zapisywalnego tylko przez root'a, jako że pliki logu mogą zawierać "drażliwe" (poufne) informacje.

Plik konfiguracyjny powinien być umieszczony w katalogu odczytywalnym i zapisywalnym tylko przez root'a, ponieważ plik konfiguracyjny kontroluje zabezpieczenia dla usług oferowanych przez serwer. Plik konfiguracyjny może być zrobiony jako odczytywalny dla wszystkich jeśli jest to pożądane, lecz nie jest to konieczne dla poprawnego funkcjonowania serwera i nie jest zalecane. Przykładowy plik konfiguracyjny `"smb.conf.sample"` jest dostarczany z źródłem serwera. Może on zostać zmieniony na `"smb.conf"` i zmodyfikowany, żeby dopasować go do twoich potrzeb.

Pozostałe notatki zakładają następujące:

- `smbd` (program serwera) zainstalowany w `/usr/local/samba/bin`

- `smb.conf` (plik konfiguracyjny) zainstalowany w `/usr/local/samba/lib`

- pliki logu przechowywane w `/var/adm/smblogs`

Serwer może być uruchomiony albo jako demon przez użytkowników lub przy starcie systemu, albo w trakcie żądania, z meta-demona takiego jak `inetd`. Jeśli uruchomiony jako demon, serwer będzie zawsze gotowy, więc rozpoczynanie sesji będzie szybsze. Jeśli jest uruchamiany z meta-demona, trochę pamięci będzie zaoszczędzone i narzędzia takie jak TCP-wrapper tcpd mogą być użyte dla dodatkowego zabezpieczenia. Dla poważnego zastosowania jako serwer plików jest zalecane, aby `smbd` uruchamiać jako demona.

Jeśli się zdecydowałeś, kontynuuj w

- URUCHAMIANIE SERWERA JAKO DEMONA

- URUCHAMIANIE SERWERA NA ŻĄDANIE.

## URUCHAMIANIE SERWERA JAKO DEMONA

Żeby uruchomić serwer jako demona z linii poleceń, po prostu wstaw tam opcję `-D`. Nie ma potrzeby, żeby umieszczać na końcu linii polecenia ampersand - opcja `-D` powoduje, że serwer i tak odłącza sam siebie od tty (konsoli).

Każdy użytkownik może uruchomić serwer jako demona (posiadając oczywiście prawa do wykonywania). Jest to użyteczne do celów testowych i może być nawet użyteczne jako tymczasowy substytut dla czegoś w rodzaju ftp. Jednakże, gdy jest uruchomiony w ten sposób, serwer będzie miał uprawnienia tylko użytkownika który go uruchomił.

Żeby upewnić się, że serwer jest uruchomiony jako demon za każdym razem gdy maszyna jest włączana, i żeby upewnić się, że jest uruchamiany jako root tak, że może służyć wielu klientom, będziesz potrzebował zmodyfikować pliki startowe systemu. W każdym odpowiednim do tego miejscu (na przykład, w `/etc/rc` ), wstaw następującą linię, zastępując numer portu, lokalizację pliku logu, pliku konfiguracyjnego i poziom debugowania jak potrzebujesz:

`/usr/local/samba/bin/smbd -D -l /var/adm/smblogs/log -s /usr/local/samba/lib/smb.conf`

(Powyższe polecenie powinno pojawić się w twoim skrypcie inicjalizacyjnym jako pojedyncza linia. Zależnie od charakterystyki twojego terminala, może to nie wyglądać w taki sposób jak w tej stronie podręcznika. Jeśli powyższe pojawia się jako więcej niż jedna linia, traktuj proszę, każde zakończenie linii lub wcięcie jako pojedynczy znak spacji lub TAB.)

Jeśli opcje użyte w czasie kompilacji są odpowiednie dla twojego systemu, wszystkie parametry z wyjątkiem `-D` mogą być pominięte. Zobacz niżej sekcję OPCJE.

## URUCHAMIANIE SERWERA NA ŻĄDANIE

Jeśli twój system używa meta-demona takiego jak `inetd`, możesz zorganizować twój system tak, żeby serwer smbd startował za każdym razem gdy jakiś proces będzie próbował połączyć się z nim. Wymaga to szeregu zmian w plikach startowych maszyny. Jeśli eksperymentujesz jako zwyczajny użytkownik zamiast root'a, będziesz potrzebował pomocy administratora systemu aby zmodyfikować pliki systemowe.

Będziesz prawdopodobnie chciał ustawić serwer nazw NetBIOS `nmbd` w tym samym czasie co `smbd` . Aby to zrobić, odnieś się do strony podręcznika `nmbd(8)`.

Najpierw, upewnij się że port jest skonfigurowany w pliku `/etc/services`. Ogólnie znany numer portu 139 powinien być użyty w miarę możliwości, choć każdy port może być wykorzystany.

Upewnij się, że linia podobna do poniższej jest w `/etc/services`:

`netbios-ssn 139/tcp`

Uwaga dla użytkowników NIS/YP - możecie potrzebować przebudować mapowanie usług NIS zamiast zmieniać wasz lokalny plik `/etc/services`.

Następnie, wprowadź odpowiednią linię w pliku `/etc/inetd.conf` (w mało prawdopodobnym wypadku, w którym używasz meta-demona innego niż inetd, jesteś zdany na siebie). Zauważ, że pierwszy element w tej linii pasuje do nazwy usługi w `/etc/services`. Zastąp odpowiednie wartości dla twojego systemu w tej linii (zobacz `inetd(8)`):

`netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd -d1 -l/var/adm/smblogs/log -s/usr/local/samba/lib/smb.conf`

(Powyższe powinno pojawić się w `/etc/inetd.conf` jako pojedyncza linia. Zależnie od charakterystyki twojego terminala, może nie pojawiać się w taki sposób, jak w tej stronie podręcznika. Jeśli powyższe pojawia się jako więcej niż jedna linia, traktuj proszę, każdy znak nowej linii lub wcięcie jako pojedynczą spację lub znak TAB.)

Zauważ, że nie ma potrzeby żeby określać tu numer portu, nawet jeśli używasz niestandardowego.

Na koniec, zredaguj plik konfiguracyjny żeby dostarczyć odpowiednich usług. Żeby zacząć, następujące dwie usługi powinny być wszystkim czego potrzebujesz:

    	[homes]
    	  writeable = yes

    	[printers]
    	  writeable = no
    	  printable = yes
    	  path = /tmp
    	  public = yes

To pozwoli ci podłączyć się do twojego katalogu domowego i wydrukować na dowolnej drukarce wspieranej przez hosta (stosownie do praw użytkownika).

## INTERAKCJE Z PAM

Samba używa PAM do autentykacji (gdy otrzyma hasło w czystym tekście), do sprawdzania kont (czy to konto jest zablokowane ?) i do zarządzania sesją. Stopień w jakim samba wspiera PAM jest ograniczony przez protokół SMB i parameter smb.conf `obey pam restrictions`. Gdy jest ustawiony, stosowane są następujące restrykcje:

- Walidacja Kont (Account Validation): Każdy dostęp do serwera samba jest sprawdzany przez PAM, żeby zobaczyć czy konto jest ważne, nie jest zablokowane i może logować sie w tym czasie. Dotyczy to również szyfrowanych logowań.

- Zarządzanie Sesją (Session Management): Gdy nie jest używane zabezpieczenie na poziomie współudziału (share level security), użytkownicy muszą przejść sprawdzanie sesji w PAM zanim dostęp będzie im przyznany. Jednakże zwróć uwagę, że jest to omijane w zabezpieczeniu na poziomie współudziału. Zwróć również uwage na to, że niektóre starsze pliki konfiguracyjne PAM mogą potrzebować dodania linii do wsparcia sesji.

## TESTOWANIE INSTALACJI

Uruchamiając serwer jako demona, uruchom go zanim przejdziesz dalej. Jeśli korzystasz z meta-demona, albo zrestartuj system, albo zabij i zrestartuj meta-demona. Niektóre wersje `inetd` przeczytają ponownie tabele konfiguracyjne jeśli odbiorą sygnał HUP.

Jeśli nazwa twojej maszyny to "fred" a twoje imię to "mary", powinieneś teraz być w stanie podłączyć się do usługi `\\fred\mary`.

Aby poprawnie testować i eksperymentować z serwerem, zalecamy korzystanie z programu smbclient (zobacz `smbclient(1)` i również podążanie krokami nakreślonymi w pliku `DIAGNOSIS.txt` w katalogu `docs/` twojej instalacji Samby.

## WERSJA

Ta strona podrecznika jest poprawna dla wersji 2.2 pakietu Samba.

## DIAGNOSTYKA

Większość diagnostyki wydawanej przez serwer jest logowana w określonym pliku logu. Nazwa pliku logu jest określana w czasie kompilacji, lecz może być unieważniona z linii poleceń.

Liczba i natura dostępnych informacji diagnostycznych zależy od poziomu debugowania używanego przez przez serwer. Jeśli masz problemy, ustaw poziom debugowania na 3 i reużytkuj pliki logu.

Większość komunikatów mówi sama za siebie. Niestety, w czasie gdy ta strona podręcznika jest tworzona, dostępnych jest zbyt wiele informacji diagnostycznych w kodzie źródłowym, aby zagwarantować opisanie każdej z osobna. Na tym etapie twoim najlepszym sposobem jest nadal grep'owanie kodu źródłowego i sprawdzanie warunków, które doprowadziły do powstania komunikatu który widzisz.

## SYGNAŁY

Wysłanie sygnału SIGHUP do smbd spowoduje, że przeładuje od swój plik konfiguracyjny `smb.conf` w ciągu krótkiego okresu czasu.

Aby wyłączyć proces smbd użytkownika jest zalecanym, aby NIE używać sygnału `SIGKILL (-9)` , chyba że jako ostateczności, jako że to może pozostawić obszar współdzielonej pamięci w niespójnym stanie. Bezpiecznym sposobem na zakończenie smbd jest wysłanie mu sygnału SIGTERM (-15) i zaczekanie, aż "umrze sam".

Poziom debugowania w logu smbd może być zwiększony lub zmniejszony przy użyciu programu `smbcontrol` (sygnały SIGUSR[1|2] nie są już używane w Samba 2.2). Jest to po to, aby umożliwić diagnozowanie przejściowych problemów, podczas gdy normalnie działa niski poziom logu.

Zauważ, że w miarę jak przechwytywanie sygnału wysyła zapis informacji debugujących, nie są one rozprowadzane w smbd. Zatem powinieneś poczekać, aż smbd będzie w stanie oczekiwania na nadchodzące smb zanim wydasz sygnał. Jest możliwe, aby zabezpieczać przechwytywanie przez odblokowanie sygnałów przed wywołaniem selekcjonującym i zablokowanie ich po nim, tym niemniej wpłynęłoby to na osiągi.

## ZOBACZ TEŻ

hosts_access(5),`inetd(8)`, `nmbd(8)`, `smb.conf(5)`, `smbclient(1)`, `testparm(1)`, `testprns(1)`, i Internetowe RFC `rfc1001.txt`, `rfc1002.txt`. Dodatkowo, specyfikacja CIFS (poprzednio SMB) jest dostępna jako link ze strony: http://samba.org/cifs/.

## AUTOR

Pierwotnie, Samba i związane z nią oprogramowanie były stworzone przez Andrew Tridgella. Samba jest teraz rozwijana przez Zespół Samba jako projekt Open Source podobnie jak jąfro Linux.

Pierwotnie, strony podręcznika Samba zostały napisane przez Karla Auera. Kody źrodłowe tych stron zostały przekonwertowane do formatu YODL (kolejny świetny kawałek oprogramowania Open Source dostępny na ftp://ftp.icce.rug.nl/pub/unix/) i zaktualizowane do wydania 2.0 samby przez Jeremy Allisona. Konwersja do DocBook została wykonana przez Geralda Cartera. Tłumaczenie na język polski i konwersję polskiej wersji do DocBook wykonał Rafał Szcześniak.