INETD(8)

NAZWA
inetd - super-serwer internetu

SKŁADNIA
inetd [-d] [plik konfiguracyjny]

OPIS
Inetd powinien być wywoływany podczas startu systemu z /etc/rc.local (zobacz rc(8)). Nasłuchuje on później 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 daemona do wywoływania wielu innych, zmniejszając wymagane obciążenie systemu.

Opcje dostępne dla inetd:

-d  Włącza debuggowanie.

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 linii. Musi istnieć wpis dla każdego pola. Pola pliku konfiguracyjnego są następujące:

    nazwa usługi (service name)
    rodzaj gniazda (socket type)
    protokół (protocol)
    określenie, czy usługa ma "zwlekać" (wait/nowait[.max])
    użytkownik[.grupa] (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ół (rpc/protocol)
    zwłoka (wait/nowait[.max])
    użytkownik[.grupa] (user[.group])
    program serwera (server program)
    argumenty programu serwera (server program arguments)

Wpis nazwa-usługi jest nazwą prawidłowej usługi, zdefiniowanej w pliku /etc/services. 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”.

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.

Pole protokół musi być prawidłowym protokołem, zdefiniowanym w /etc/protocols. Przykładami mogą być “tcp” lub “udp”. Usługi oparte o RPC są określane przez “rpc/tcp” lub “rpc/udp.”

Wpis zwłoka jest używany tylko dla gniazd datagramowych (inne gniazda powinny mieć wpis “nowait” ). 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 datagramy, ewentualnie mające timeouty, 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. Tftpd(8) jest wyjątkiem; jest to serwer datagramowy, który zestawia pseudopołączenia. Musi być zdefiniowany jako “wait” aby zapobiec wyścigowi; serwer odczytuje pierwszy pakiet, tworzy nowe gniazdo, następnie forkuje i wychodzi, aby inetd mógł robić swoje i oczekiwać na nowe żądania usług, które (jak zwykle) przyłącza następnie do odpowiednich innych serwerów. Opcjonalny przyrostek “max” (oddzielony od “wait” lub “nowait” kropką) określa maksymalną liczbę instancji serwera, jakie mogą zostać postawione przez inetd w czasie 60 sekund. Gdy zostanie to pominięte, “max” przyjmuje wartość 40.

Wpis użytkownik powinien zawierać nazwę użytkownika 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ę w innym (podstawowym) id 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.”

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 /etc/inetd.pid który zawiera jego identyfikator procesu (PID).

ZOBACZ TAKŻE
comsat(8), fingerd(8), ftpd(8), rexecd(8), rlogind(8), rshd(8), telnetd(8), tftpd(8)

HISTORIA
Komenda inetd pojawiła się w 4.3BSD. Wsparcie dla usług opartych o Sun-RPC zostało zmodelowane wg udostępnionego przez Sun-OS 4.1.