Provided by: manpages-pl_0.7-1_all bug

NAZWA

       inetd — Internetowy “superserwer”

SKŁADNIA

       inetd [-d] [-E] [-i] [-l] [-q długość] [-R częstość] [plik-konfiguracyjny]

OPIS

       Inetd  nasłuchuje  połączeń  na  określonych  gniazdach  internetowych. Gdy na jednym z gniazd zaistnieje
       połączenie, decyduje on, jakiej usłudze to gniazdo odpowiada i wywołuje program, który  obsłuży  żądanie.
       Po  zakończeniu  programu,  inetd  kontynuuje nasłuchiwania gniazda (poza niektórymi wypadkami, opisanymi
       poniżej). Ogólnie, inetd umożliwia używanie jednego demona  do  wywoływania  wielu  innych,  zmniejszając
       wymagane obciążenie systemu.

       Dostępne opcje:

       -d      Włącza debugowanie.

       -E      Zapobiega  ignorowaniu  przez  inetd środowiska. Bez tej opcji część potencjalnie niebezpiecznych
               zmiennych środowiskowych, w tym PATH zostanie usuniętych i nie będzie dziedziczone przez usługi.

       -i      Program nie przechodzi w tryb demona.

       -l      Włącza logowanie połączeń i kontrolę dostępu  przez  libwrap.  Usługi  wewnętrzne  nie  mogą  być
               opakowywane. Gdy opcja jest aktywna, po cichu nie dokonuje się wykonania /usr/sbin/tcpd nawet gdy
               jest ono obecne w pliku /etc/inetd.conf, a w zamian inetd bezpośrednio wywołuje libwrap.

       -q długość
               Określa długość kolejki połączeń listen(2) (domyślnie 128).

       -R częstość
               Określa  maksymalną  częstość,  z  jaką  usługa może być wywołana w ciągu minuty (domyślnie 256).
               Jeśli usługa przekroczy ten limit, zapisze problem do dziennika i zaprzestanie obsługi żądań  dla
               danej  usługi przez dziesięć minut. Więcej informacji można przeczytać też w poniższym opisie pól
               wait/nowait.

       Podczas uruchamiania, inetd odczytuje swoją konfigurację z pliku konfiguracyjnego, którym domyślnie  jest
       /etc/inetd.conf.  Musi tam być wpis dla każdego pola pliku konfiguracyjnego, z poszczególnymi wpisami dla
       danego  pola;  wpisy  są  oddzielane  znakiem tabulacji lub spacji. Komentarze są zaznaczane przez “#” na
       początku wiersza. Pola pliku konfiguracyjnego są następujące:

             nazwa usługi (service name)
             rodzaj gniazda (socket type)
             protokół[,sndbuf=rozmiar][,rcvbuf=rozmiar]
                                      (protocol[,sndbuf=size][,rcvbuf=size])
             określenie, czy usługa ma "zwlekać" (wait/nowait[.max])
             użytkownik[.grupa] lub użytkownik[:grupa]
                                      (user[.group] lub user[:group])
             program serwera (server program)
             argumenty programu serwera (server program arguments)

       Aby podać usługę opartą o Sun-RPC , wpis powinien zawierać te pola:

             nazwa usługi/wersja (service name/version)
             rodzaj gniazda (socket type)
             rpc/protokół[,sndbuf=rozmiar][,rcvbuf=rozmiar]
                                      (rpc/protocol[,sndbuf=size][,rcvbuf=size])
             zwłoka (wait/nowait[.max])
             użytkownik[.grupa] lub użytkownik[:grupa]
                                      (user[.group] or user[:group])
             program serwera (server program)
             argumenty programu serwera (server program arguments)

       W przypadku usług internetowych, pierwsze pole w wierszu  może  posiadać  również  wyrażenie  określające
       adres  hosta,  będące  przedrostkiem  oddzielonym  dwukropkiem.  Łańcuch  będący  w  pierwszym polu przed
       dwukropkiem określa wówczas którego adresu lokalnego ma użyć przy nasłuchiwaniu dla tej usługi. W  jednym
       wierszu  można  podać  wiele  adresów  lokalnych, oddzielonych dwukropkiem. Można wpisać adresy w postaci
       numeru IP (cztery liczby oddzielone kropkami) lub nazw symbolicznych domen. Nazwy domenowe są  sprawdzane
       za  pomocą  gethostbyname().   Jeśli  dana  nazwa  ma przypisanych kilka adresów, inetd tworzy gniazda do
       nasłuchu na każdym adresie.

       Pojedynczy znak “*” oznacza INADDR_ANY, czyli  “wszystkie  adresy  lokalne”.   Aby  zapobiec  powtarzaniu
       adresów  występujących  wielokrotnie,  wiersz z wyrażeniami określającymi adresy hosta i dwukropkiem, bez
       kolejnych pól, powoduje że adresy  są  zapamiętywane  i  używane  do  wszystkich  kolejnych  wierszy  bez
       bezpośrednio  podanego wyrażenia określającego adres (do momentu napotkania kolejnego tak skonstruowanego
       wiersza lub dotarcia do końca pliku). Wiersz
             *:
       jest bezpośrednio udostępniony na początku pliku, z tego  powodu  tradycyjne  pliki  konfiguracyjne  (bez
       wyrażeń  określających  adres hosta) będą interpretowane w tradycyjny sposób, czyli wszystkie usługi będą
       nasłuchiwać na wszystkich adresach lokalnych. Jeśli protokół to “unix”, to ta wartość jest ignorowana.

       Wpis nazwa-usługi jest nazwą prawidłowej usługi, zdefiniowanej w  pliku  /etc/services  lub  portem.  Dla
       usług  “wewnętrznych”  (internal)  (opisanych  niżej),  nazwa  usługi musi być oficjalną nazwą usługi (to
       znaczy pierwszym wpisem w /etc/services).  Podczas podawania usługi  opartej  o  Sun-RPC,  pole  to  jest
       prawidłową  nazwą  usługi  RPC, zdefiniowaną w pliku /etc/rpc.  Część na prawo od “/” jest numerem wersji
       RPC. Może to być zwyczajny argument numeryczny, lub zakres wersji.  Zakres  jest  obramowany  od  niższej
       wersji do wyższej - “rusers/1-3”.  W przypadku gniazd Unix-domain pole to określa ścieżkę gniazda.

       Wpis  rodzaj  gniazda powinien być jednym z “stream”, “dgram”, “raw”, “rdm”, lub “seqpacket”, zależnie od
       tego, czy gniazdo jest strumieniowe (stream), datagramowe (datagram), lub typu  raw,  reliably  delivered
       message, czy też sequenced packet.

       Protokół  musi być prawidłowym protokołem, podanym w pliku /etc/protocols lub w “unix”.  Przykładami mogą
       być “tcp” lub “udp”.  Usługi oparte na RPC są podawane z typem usługi “rpc/tcp” lub “rpc/udp”.   “tcp”  i
       “udp”  będą  rozpoznawane  jako  “TCP  lub  UDP  w  domyślnej  wersji  IP”.  Obecnie jest to IPv4, lecz w
       przyszłości będzie to IPv6. Aby bezpośrednio wskazać IPv4 lub IPv6 należy zastosować  zapis  taki  jak  w
       przykładach: “tcp4”, “udp6”.  Protokół równy “unix” służy do wskazania gniazda w Unix-domain.

       Oprócz protokołu, plik konfiguracyjny może określać rozmiary buforów nasłuchujących gniazd do wysyłania i
       otrzymywania  danych. Jest to szczególnie przydatne przy TCP, jako współczynnik skalujący okna, co bazuje
       na fakcie, że rozmiar bufora gniazda danych otrzymywanych jest ogłaszany przy  nawiązaniu  połączenia,  a
       zatem  rozmiar bufora gniazda serwera musi być ustawiony na gnieździe nasłuchującym. Zwiększając rozmiary
       buforów gniazda, w pewnych sytuacjach można uzyskać lepszą wydajność TCP.   Rozmiar  buforów  gniazda  są
       podawane przez dołączanie ich wartości do określenia protokołów, jak poniżej:

             tcp,rcvbuf=16384
             tcp,sndbuf=64k
             tcp,rcvbuf=64k,sndbuf=1m

       Można  podać  wartość  dosłowną  lub  zmodyfikować ją podając ‘k’ do wskazania kilobajtów lub ‘m’ - jeśli
       chodzi o megabajty.

       Wpis wait/nowait (zwłoka) jest używany do przekazania czy powinien on czekać na powrót programu  serwera,
       czy  kontynuować  obsługę  połączeń  na  gnieździe. Jeśli serwer datagramowy łączy się ze swoim rozmówcą,
       zwalniając gniazdo w ten sposób, że inetd może odbierać dalsze wiadomości z tego gniazda, to mówi  się  o
       nim  jako  o  serwerze  “wielowątkowym”  (multi-threaded)  i  powinno  się  używać wpisu “nowait” Serwery
       datagramowe, które przetwarzają wszystkie nadchodzące do gniazda datagram, które ostatecznie przedawniają
       się, nazywa się “jednowątkowymi” (single threaded) i powinno używać się dla nich wpisu “wait”.  comsat(8)
       (biff(1)) i talkd(8) są przykładami tego drugiego rodzaju serwerów datagramowych.  Opcjonalny  przyrostek
       “max”  (oddzielony od “wait” lub “nowait” kropką) określa maksymalną liczbę instancji serwera, jakie mogą
       zostać postawione przez w czasie 60 sekund, domyślnie wynosi 256.  Jeśli  usługa  przekroczy  ten  limit,
       zapisze  ten  problem  do  dziennika  i zaprzestanie obsługi żądań dla danej usługi przez dziesięć minut.
       Proszę sprawdzić też opis opcji -R (powyżej).

       Serwery strumieniowe są zwykle oznaczane jako “nowait”, lecz  jeśli  pojedynczy  serwer  strumieniowy  ma
       obsługiwać  wiele połączeń, można go oznaczyć “wait”.  Główne gniazdo zostanie wówczas przekazane jako fd
       0 do  serwera,  który  następnie  będzie  musiał  akceptować  połączenia  przychodzące.  Serwer  powinien
       ostatecznie  przedawnić się i wyjść gdy nie będzie już aktywnych połączeń.  będzie kontynuował nasłuch na
       głównym gnieździe czekając na połączenia, więc serwer nie powinien zamykać go przy wychodzeniu.

       Wpis użytkownik powinien zawierać nazwę użytkownika, pod którym powinien uruchamiać się serwer. Umożliwia
       to serwerom posiadanie mniejszych  praw  niż  prawa  roota.  Opcjonalnie,  po  dodaniu  kropki  do  nazwy
       użytkownika,  można  podać  w  tym  polu  nazwę  grupy. Umożliwia to serwerom pracę z innym (podstawowym)
       identyfikatorem grupy niż ten, podany w pliku z hasłami. Jeśli grupa jest podana, a użytkownik  nie  jest
       rootem, to uzupełniające grupy związane z użytkownikiem wciąż będą ustawione.

       Wpis  program  serwera  powinien  zawierać  ścieżkę  programu,  który  ma  być  wywoływany przez inetd po
       otrzymaniu żądania na gnieździe. Jeśli inetd udostępnia tę usługę wewnętrznie, to wpis ten  powinien  być
       wpisem “internal”.

       Wpis  argumenty programu serwera powinien wyglądać tak jak zwykłe argumenty, poczynając od argv[0], który
       jest nazwą programu.  Jeśli  usługa  jest  udostępniana  wewnętrznie,  to  wpis  powinien  przyjąć  nazwę
       “internal.”

       Program  inetd  udostępnia  wiele  “trywialnych”  usług  wewnętrznie,  używając  do  tego swoich własnych
       procedur. Tymi usługami są “echo”, “discard”, “chargen” (generator znaków), “daytime” (odczytywalny przez
       człowieka czas) oraz “time” (czas odczytywalny przez maszynę, liczba sekund od północy 1 stycznia  1900).
       Wszystkie  te  usługi  są  oparte  o  tcp.  Dla  dalszych  szczegółów  o  tych usługach, skonsultuj się z
       odpowiednim RFC z Centrum Informacji Sieci (Network Information Center).

       Inetd odczytuje swój plik konfiguracyjny od nowa gdy otrzyma sygnał zawieszenia (hangup),  czyli  SIGHUP.
       Usługi  mogą  być  tak  dodawane,  kasowane lub modyfikowane.  Inetd tworzy plik /var/run/inetd.pid który
       zawiera jego identyfikator procesu (PID).

   libwrap
       Obsługa opakowań TCP jest włączona w program w  celu  zapewnienia  wbudowanej  funkcji  kontroli  dostępu
       podobnej do tcpd. Zewnętrzny program tcpd nie jest wymagany. Nie ma potrzeby zmian wpisu programu serwera
       w  /etc/inetd.conf  do  włączenia  tej funkcji.  używa /etc/hosts.allow i /etc/hosts.deny do konfiguracji
       usług kontroli dostępu, zgodnie z opisem w podręczniku hosts_access(5).

   Zachowanie TCP/UDP w IPv6
       Aby uruchomić serwer do obsługi ruchu IPv4 i IPv6 konieczne jest uruchomienie  dwóch  odrębnych  procesów
       dla  tego samego programu serwera, dzięki podaniu dwóch odrębnych wierszy w pliku inetd.conf osobnych dla
       “tcp4” i “tcp6”.

       W zależności od różnych kombinacji ustawień demona IPv4/IPv6 będzie wykazywał następujące zachowanie:
          Jeśli ma się jedynie jeden serwer - “tcp4”, ruch IPv4 będzie przekierowany na serwer. Ruch  IPv6  nie
           będzie akceptowany.
          Jeśli  ma  się  dwa  serwery,  tzn.   “tcp4” oraz “tcp6”, to ruch IPv4 będzie przekierowany na serwer
           “tcp4”, a ruch IPv6 będzie przekierowany na serwer “tcp6”.
          Jeśli ma się jedynie jeden serwer - “tcp6”, jedynie ruch IPv6 będzie przekierowany na serwer.

           Specjalny parametr “tcp46” można wykorzystać przy przestarzałych serwerach, które wymagają połączenia
           IPv4 przepisanego na gniazdo IPv6. Nie zaleca się używania tego parametru.

ZOBACZ TAKŻE

       fingerd(8), ftpd(8), identd(8), talkd(8)

HISTORIA

       Polecenie pojawiło się w 4.3BSD.  Obsługa usług opartych na Sun-RPC została  utworzona  wg  udostępnionej
       przez Sun-OS 4.1. Obsługę IPv6 dodano w projekcie KAME w 1999.

       Marco  d'Itri przeniósł ten kod z OpenBSD latem 2002 roku oraz dodał możliwość modyfikacji buforów gniazd
       oraz obsługę libwrap z drzewa źródeł NetBSD.

BŁĘDY

       Na systemach linuksowych demon nie może przeładować swojej konfiguracji.  Trzeba  go  zrestartować  jeśli
       zmienił się adres hosta dla usługi pomiędzy “*” i wyrażeniem określającym adres.

       Programy  serwera  używane  z  “dgram”  “udp”  “nowait” muszą czytać z gniazd sieciowych lub inetd będzie
       mnożył procesy aż do osiągnięcia limitu.

       Wyrażenia określające adres hosta, choć ich koncepcja ma sens przy usługach RPC, nie  działają  do  końca
       poprawnie.  Dzieje  się tak w dużej części z powodu faktu, iż interfejs portmappera nie udostępnia metody
       rejestracji różnych portów dla tej samej usługi na różnym adresie lokalnym. Jeśli nie będzie się  używało
       więcej niż jednego wpisu dla danej usługi RPC, to wszystko powinno działać poprawnie (proszę zauważyć, że
       do  wierszy RPC bez bezpośredniego określenia adresu ma zastosowanie domyślne wyrażenie określające adres
       hosta).

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej   strony   podręcznika   man   są:   Przemek   Borys   (PTM)
       <pborys@dione.ids.pl> i Michał Kułach <michal.kulach@gmail.com>.
       Polskie  tłumaczenie  jest  częścią  projektu  manpages-pl;  uwagi,  pomoc,  zgłaszanie błędów na stronie
       http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją  0.20140418 oryginału.

Debian                                          18 kwietnia, 2014                                       INETD(8)