winbindd
8

# winbindd

Demon Przełączania Usług Nazewniczych (Name Service Switch) do odwzorowania nazw z serwerów NT

          winbindd
          -i
          -d <poziom debugowania>
          -s <plik konfiguracyjny smb>

## OPIS

Ten program jest częścią pakietu Samba.

`winbindd` jest demonem który dostarcza usług do funkcjonalności Przełącznika Usług Nazewniczych (Name Service Switch - dalej użyta jest oryginalna nazwa, przyp.tłum.) który jest obecny w większości nowych bibliotek C. Name Service Switch pozwala na uzyskanie informacji użytkownika i systemu z różnych usług bazodanowych, takich jak NIS lub DNS. Dokładne zachowanie może być skonfigurowane poprzez plik `/etc/nsswitch.conf`. Użytkownicy i grupy są alokowani, gdy tylko zostaną odwzorowani w obrębie zakresu identyfikatorów użytkowników i grup określonego przez administratora systemu Samba.

Usługa dostarczana przez winbindd nazywa się "winbind" i może być użyta do odwzorowania danych użytkownika i grupy z serwera Windows NT. Może również dostarczyć usług autentykacyjnych poprzez przypisany moduł PAM.

Następujące bazy danych nsswitch są implementowane przez usługę winbind:

passwd

  Dane użytkownika tradycyjnie przechowywane w pliku `passwd(5)` i używane przez funkcje `getpwent(3)`.

group

  Dane grup tradycyjnie przechowywane w pliku `group(5)` i używane przez funkcje `getgrent(3)`.

Na przykład, poniższa prosta konfiguracja w pliku `/etc/nsswitch.conf` może być użyta do odwzorowania danych użytkowników i grup najpierw z `/etc/passwd` i `/etc/group`, a potem z serwera Windows NT.

    passwd:         files winbind
    group:          files winbind

## OPCJE

-d poziomdebugowania

  Ustawia poziom debugowania na wartość całkowitą pomiędzy 0 i 100. 0 odpowiada brakowi debugowania, a 100 odpowiada (?)absolutnym detalom(?). Aby wysłać raport o błędach do Zespołu Samba, użyj poziomu 100 (zobacz plik `BUGS.txt`).

-i

  Mówi `winbindd` żeby nie zostawał demonem i nie odłączał się od bieżącego terminala. Ta opcja jest używana przez developerów podczas interaktywnego debugowania `winbindd` jeśli jest to wymagane.

## ODWZOROWANIE ID I NAZWY

Użytkownicy i grupy w serwerze Windows NT są skojarzeni z identyfikatorem relatywnym (rid) który jest unikalny dla domeny gdy użytkownik lub grupa są tworzeni. Żeby konwertować użytkownika lub grupę Windows NT na użytkownika lub grupę unix, wymagane jest odwzorowanie pomiędzy rid'ami a identyfikatorami użytkownika lub grupy unix. Jest to jedno z zadań które wykonuje `winbindd`.

Jak tylko użytkownicy i grupy winbindd są odwzorowywani przez serwer, identyfikatory użytkowników i grup są alokowane z określonego przedziału. Jest to wykonywane przy pierwszym podejściu, oparte o serwer, choć wszyscy istniejący użytkownicy i grupy będą mapowani gdy tylko klient przeprowadzi enumerację użytkowników lub grup. Zaalokowane identyfikatory unix będą przechowywane w pliku bazy danych w katalogu blokad (lock) Samba i będą zapamiętane.

OSTRZEŻENIE:: Baza danych "rid na unix id" jest jedynym miejscem, gdzie odwzorowania użytkowników i grup są przechowywane przez winbindd. Jeśli ten plik zostanie usunięty lub uszkodzony, nie będzie żadnego sposobu żeby winbindd określił, które identyfikatory użytkowników i grup odpowiadają którym rid'om użytkowników i grup Windows NT.

## KONFIGURACJA

Konfiguracja demona `winbindd` jest wykonywana przez parametry konfiguracyjne w pliku `smb.conf(5)`. Wszystkie parametry powinny być określone w sekcji [global] smb.conf.

winbind separator

  Opcja separatora winbind pozwala ci określić jak nazwy domen NT i użytkowników są łączone w nazwę użytkownika unix gdy jest ona prezentowana użytkownikom. Domyślnie, `winbindd` będzie używał tradycyjnego separatora '\' tak, że nazwa użytkownika unix będzie wyglądała jak DOMENA\nazwauzytkownika. W niektórych przypadkach ten znak może powodować problemy, bo znak '\' ma specjalne znaczenie w powłokach unix. W takim wypadku możesz użyć opcji separatora winbind, aby określić alternatywny znak separatora. Dobrymi alternatywami mogą być '/' (aczkolwiek to konfliktuje z separatorem katalogów unix) lub '+'. Znak '+' wydaje się być najlepszym wyborem dla 100% kompatybilności z istniejącymi narzędziami unix, lecz może być złym wyborem z estetycznego punktu widzenia, zależnie od twojego gustu.

  Domyślnie: `winbind separator = \`

  Przykład: `winbind separator = +`

winbind uid

  Parametr winbind uid określa zakres identyfikatorów użytkowników które są alokowane przez demona winbind. Zakres ten nie powinien zawierać istniejących użytkowników lokalnych lub nis, bo w przeciwnym wypadku mogą wystąpić dziwne konflikty.

  Domyślnie: `winbind uid = <pusty łańcuch znakowy>`

  Przykład: `winbind uid = 10000-20000`

winbind gid

  Parametr winbind gid określa zakres identyfikatorów grup które są alokowane przez demona winbind. Zakres ten nie powinien zawierać istniejących grup lokalnych lub nis, bo w przeciwnym wypadku mogą wystąpić dziwne konflikty.

  Domyślnie: `winbind gid = <pusty łańcuch znakowy>`

  Przykład: `winbind gid = 10000-20000`

winbind cache time

  Ten parametr określa liczbę sekund przez które demon `winbindd` będzie cache'ował dane użytkowników i grup przed ponownym pytaniem serwera Windows NT. Gdy jakiś element w tym cache'u jest starszy niż podany tu czas, winbindd poprosi kontroler domeny o numer sekwencyjny bazy danych kont na serwerze. Jeśli numer sekwencyjny nie zmienił się, wtedy cache'owany element jest oznaczany jako ważny (aktualny, przyp.tłum.) na następne `winbind cache time` sekund. W przeciwnym wypadku, element jest pobrany z serwera. Oznacza to że tak długo, jak baza danych kont nie jest zmieniana, winbindd będzie musiał wysyłać tylko jeden pakiet z pytaniem o numer sekwencyjny co `winbind cache time` sekund.

  Domyślnie: `winbind cache time = 15`

winbind enum users

  W wielkich instalacjach może być konieczne powstrzymanie enumeracji użytkowników poprzez grupę wywołań systemowych `setpwent()`, `getpwent()` i `endpwent()`. Jeśli parametr `winbind enum users` jest ustawiony na `false`, wywołania systemowe `getpwent` nie zwrócą żadnych danych.

  Ostrzeżenie: Wyłączanie enumeracji użytkowników może spowodować, że niektóre programy będą zachowywać się dziwnie. Przykładowo, program finger jest zależny od posiadania dostępu do pełnej listy użytkowników podczas szukania pasujących nazw użytkowników.

  Domyślnie: `winbind enum users = yes`

winbind enum groups

  W wielkich instalacjach może być konieczne powstrzymanie enumeracji grup poprzez grupę wywołań systemowych `setgrent()`, `getgrent()` i `endgrent()`.

  Jeśli parametr `winbind enum groups` jest ustawiony na `false`, wywołania systemowe `getgrent` nie zwrócą żadnych danych.

  Ostrzeżenie: Wyłączanie enumeracji grup może spowodować, że niektóre programy będą zachowywać się dziwnie.

  Domyślnie: `winbind enum groups = no`

template homedir

  Przy wypełnianiu informacji o użytkowniku Windows NT, demon `winbindd` używa tego parametru do wpisania katalogu domowego dla tego użytkownika. Jeśli obecny jest tu łańcuch znakowy `%D` jest on zastępowany nazwą domeny tego użytkownika Windows NT. Jeśli obecny jest łańcuch `%U` jest on zastępowany nazwą użytkownika Windows NT.

  Domyślnie: `template homedir = /home/%D/%U`

template shell

  Przy wypełnianiu informacji o użytkowniku Windows NT, demon `winbindd` używa tego parametru do wpisania powłoki dla tego użytkownika.

## PRZYKŁADOWE USTAWIENIE

Aby ustawić winbindd na szukanie użytkowników i grup plus autentykację z kontrolera domeny, użyj ustawień podobnych do poniższych. To było testowane na systemie RedHat 6.2 Linux.

W `/etc/nsswitch.conf` wstaw to:

    passwd:     files winbind
    group:      files winbind

W `/etc/pam.d/*` zastąp linie `auth` czymś podobnym:

    auth       required      /lib/security/pam_securetty.so
    auth       required      /lib/security/pam_nologin.so
    auth       sufficient    /lib/security/pam_winbind.so
    auth       required      /lib/security/pam_pwdb.so use_first_pass shadow nullok

Zwróć uwagę w szczególności na użycie słowa kluczowego `sufficient` i `use_first_pass`.

Teraz zastąp linie konta (account) tym:

`account required /lib/security/pam_winbind.so`

Następnym krokiem będzie przyłączenie się do domeny. Aby to zrobić użyj programu `smbpasswd` w ten sposób:

`smbpasswd -j DOMENA -r PDC -U Administrator`

Nazwa użytkownika po `-U` może być nazwą każdego użytkownika Domeny który ma przywileje administracyjne. Zastąp nazwę "DOMENA" swoją nazwą domeny, a nazwę "PDC" nazwą swojego PDC.

Następnie skopiuj `libnss_winbind.so` do `/lib`, a `pam_winbind.so` do `/lib/security/`. Potrzebne jest dowiązanie symboliczne z `/lib/libnss_winbind.so` do `/lib/libnss_winbind.so.2`. Jeśli używasz starszej wersji glibc, wtedy celem dowiązania powinien być `/lib/libnss_winbind.so.1`.

Na koniec, utwórz `smb.conf` zawierający dyrektywy jak poniżej:

    [global]
            winbind separator = +
            winbind cache time = 10
            template shell = /bin/bash
            template homedir = /home/%D/%U
            winbind uid = 10000-20000
            winbind gid = 10000-20000
            workgroup = DOMENA
            security = domain
            password server = *

Teraz uruchom `winbindd` i powinieneś zauwaźyć, że twoja baza danych użytkowników i grup jest powiększona o twoich użytkowników i grupy NT, oraz że możesz zalogować się do twojego systemu unix jako użytkownik z domeny, przy użyciu składni DOMENA+użytkownik jako nazwa użytkownika. Możesz chcieć skorzystać z poleceń `getent passwd` i `getent group` żeby potwierdzić poprawne funkcjonowanie `winbindd` .

## NOTATKI

Poniższe notatki są przydatne podczas konfigurowania i uruchamiania `winbindd`:

`nmbd` musi działać na lokalnej maszynie żeby `winbindd` działał. `winbindd` sprawdza listę zaufanych domen (trusted domains) dla serwera Windows NT przy starcie i gdy odbierze sygnał SIGHUP. W ten sposób, aby działający `winbindd` dowiedział się o nowych relacjach zaufania między serwerami, musi otrzymać sygnał SIGHUP.

Procesy klienckie odwzorowujące nazwy poprzez moduł nsswitch `winbindd` czytają zmienną środowiskową o nazwie `$WINBINDD_DOMAIN`. Jeśli ta zmienna zawiera listę nazw domen Windows NT odddzielonych przecinkami, to winbindd odwzoruje tylko użytkowników i grupy w tych domenach Windows NT.

Naprawdę łatwo jest zdekonfigurować PAM. Upewnij się że wiesz co robisz, modyfikując jego pliki konfiguracyjne. Można ustawić PAM w taki sposób, że nie będziesz się już mógł zalogować do systemu.

Jeśli na więcej niż jednej maszynie UNIX działa `winbindd` wówczas - generalnie - identyfikatory użytkowników i grup alokowane przez winbindd nie będą takie same. Będą one poprawne tylko dla lokalnej maszyny.

Jeśli plik mapujący Windows NT RID na id użytkownika i grupy UNIX zostanie uszkodzony lub zniszczony, wtedy mapowania będą stracone.

## SYGNAŁY

Poniższe sygnały mogą być wykorzystane do manipulowania demonem `winbindd`.

SIGHUP

  Przeładuj plik `smb.conf(5)` i wprowadź wszystkie zmiany parametrów do działającej wersji winbindd. Ten sygnał również oczyszcza cache'owane dane użytkowników i grup. Lista innych domen zaufanych przez winbindd jest również przeładowana.

SIGUSR1

  Sygnał SIGUSR1 spowoduje, że `winbindd` zapisze informacje o statusie do pliku logu winbind, włącznie z informacjami o liczbie użytkowników i grup alokowanych przez `winbindd`.

  Pliki logu są przechowywane pliku określonym parametrem `log file`.

## PLIKI

`/etc/nsswitch.conf(5)`

  Plik konfiguracyjny przełącznika usług nazewniczych (name service switch, dalej używana jest nazwa oryginalna)

/tmp/.winbindd/pipe

  Łącze UNIX przez które klienci komunikują się z programem `winbindd`. Z powodu bezpieczeństwa klient winbind będzie próbował połączyć się z demonem winbindd tylko, jeśli zarówno katalog `/tmp/.winbindd` jak i plik `/tmp/.winbindd/pipe` będą własnością root'a.

/lib/libnss_winbind.so.X

  Implementacja biblioteki name service switch.

$LOCKDIR/winbindd_idmap.tdb

  "Magazyn" mapowania Windows NT rid na id użytkownika/grupy UNIX. Katalog blokad jest określony przy użyciu opcji `--with-lockdir` gdy Samba jest na początku kompilowana. Domyślnie jest to katalog `/usr/local/samba/var/lock`.

$LOCKDIR/winbindd_cache.tdb

  "Magazyn" dla cache'owanych danych użytkowników i grup.

## WERSJA

Ta strona podręcznika jest poprawna dla wersji 2.2 pakietu Samba.

## ZOBACZ TEŻ

`nsswitch.conf(5)`, samba(7), wbinfo(1), smb.conf(5)

## 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ądro Linux.

`wbinfo` i `winbindd` zostały napisane przez Tima Pottera.

Konwersja do DocBook dla Samba 2.2 została wykonana przez Geralda Cartera. Tłumaczenie na język polski wykonał Rafał Szcześniak.