rlientd.conf(5) plik konfiguracyjny programu rlinetd

OPIS

Plik rlinetd.conf zawiera konfigurację programu rlinetd. Składa się on z kilku podobnych do siebie konstrukcji składniowych, różniących się głównie opcjami, których można w nich użyć.

Wszystkie łańcuchy znaków powinny być ujęte w znaki ". W pewnych przypadkach (np. dyrektywy log, exec oraz chroot) można używać zmiennych, które zostaną automatycznie rozwinięte.
Jeśli nie podano inaczej, wszystkie liczby muszą być liczbami dodatnimi,

service "nazwa" {

...
}

Ta konstrukcja opisuje usługę. Parametr nazwa służy głównie wygodzie użytkownika, pozwala na rozróżnianie komunikatów w pliku logu oraz dostarcza domyślnej wartości opcjom, które jako argument przyjmują nazwę.

enabled

Ta dyrektywa pozwala w prosty sposób włączać lub wyłączać usługę. Argumentem może być albo yes, albo no. Domyślną wartością jest yes. Ustawienie tej opcji na no wyłącza usługę.

Przykład:

enabled no;

port

Ustawia listę portów, na których usługa jest dostępna. Porty można podać zarówno w formacie tekstowym, jak i numerycznym. Jeśli nie podano, domyślnie przyjmuje się port równy nazwie usługi, chyba że usługa jest typu RPC - w tym przypadku port zostanie dynamicznie nadany przez system.

Przykład:

port telnet, rcmd, 56, 99;

interface

Ustawia interfejsy, na których usługa będzie nasłuchiwać. Jako argument przyjmuje listę adresów IP odpowiadających adresom skonfigurowanych w systemie interfejsów sieciowych. Jeżeli nie podano lub jeśli ustawiono na specjalną wartość any, to usługa będzie nasłuchiwać na wszystkich dostępnych interfejsach.

Przykłady:

interface 192.168.1.1, 192.168.1.2;

interface any;

exec

Określa linię poleceń usługi. Można używać podstawień zmiennych, patrz Modyfikatory tekstu poniżej.

Przykład:

exec /usr/sbin/in.telnetd -d;

server

Podaje program do wykonania, jeżeli jest różny od exec.

Przykład:

server /usr/sbin/tcpd;

protocol

Określa protokół sieciowy używany do nasłuchiwania na portach usługi. Argumentem może być albo tcp, albo udp. Domyślną wartością jest tcp.

Przykład:

protocol tcp;

user

Ustawia identyfikator użytkownika, z którym usługa będzie uruchomiona. Może być podany zarówno w formacie tekstowym (jako nazwa użytkownika), jak i numerycznym. Jeżeli nie ustawiono wartości dyrektywy group, to grupa jest także ustawiana na podstawową grupę użytkownika.

Przykład:

user nobody;

group

Ustawia identyfikator grupy, z którym usługa będzie uruchomiona. Może być podany zarówno w formacie tekstowym (jako nazwa grupy), jak i numerycznym.

Przykład:

group system;

backlog

Określa wartość argumentu backlog przekazywanego do wywołania systemowego listen(2).

Przykład:

backlog 30;

instances

Ustawia maksymalną liczbę instancji usługi, która może być uruchomiona jednocześnie. Domyślną wartością jest 40.

Przykład:

instances 50;

wait

Ta dyrektywa naśladuje zachowanie wait demona inetd(8). Argumentem może być albo yes, albo no. Domyślną wartością jest no. Ustawienie tej opcji na yes ustawia także wartość opcji instances na 1.

Przykład:

wait yes;

nice

Określa priorytet procesu, z jakim usługa zostanie uruchomiona. Argument jest przekazywany bezpośrednio do wywołania systemowego setpriority(2). Wartość może być ujemna.

Przykład:

nice -5;

rpc

Określa, że usługa powinna być zarejestrowana jako usługa RPC w systemowym maperze portów portmap(8). Dopuszcza następują argumenty:

rpc {

name "nazwa"; version 3,6,9-15,22;
}

Parametr nazwa jest opcjonalny, a jego domyślną wartością jest nazwa usługi.

chroot

Określa główny katalog usługi. Można używać podstawień zmiennych, patrz Modyfikatory tekstu poniżej.

Przykład:

chroot /tftpboot/%O;

log

Ta dyrektywa przyjmuje dwa argumenty. Pierwszym musi być albo nazwa symboliczna określona poprzednio w dyrektywie log (patrz niżej), albo słowo syslog. W tym drugim przypadku do logowania komunikatu będzie wywołania funkcja biblioteczna syslog(3). Drugim argumentem jest tekst komunikatu, który będzie logowany. Tekst komunikatu może zawierać zmienne opisane poniżej w sekcji Modyfikatory tekstu.

Przykład:

log syslog "Zakończono obsługę klienta z %O";

tcpd

Dyrektywa włącza stosowanie kontroli dostępu za pomocą tcp_wrappers. Ma ten sam efekt, co uruchomienie usługi z argumentem server ustawionym na /usr/sbin/tcpd (lub gdziekolwiek program tcpd jest zainstalowany), ale pomija uruchomienie tego programu. Akceptuje do dwóch dodatkowych parametrów. Pierwszym jest nazwa usług, do której będą stosowane reguły tcpd, a drugim jest blok instrukcji do wykonania w przypadku dopasowania. Jeśli nie podano nazwy, to domyślnie będzie to nazwa bieżącej usługi. Jeśli nie podano bloku instrukcji, to domyślną wartością jest "exit;".

Przykłady:

tcpd in.telnetd;

tcpd { exec /usr/local/bin/winnuke %O; }

tcpd "pointless" { echo "Cześć chłopaki, wejdźcie." ; }

tcpd "bunt" { echo "500 Dostęp z %O zabroniony." ; exit; }

exit

Ta dyrektywa jest użyteczna tylko w bloku instrukcji będącym argumentem dyrektywy exit.Uwaga - jeśli nie zostanie użyta (i nie poda się innej dyrektywy kończącej przetwarzanie, takiej jak exec) spowoduje, że usługa będzie działać wiecznie.

Przykład:

exit;

capability

Dyrektywa określa uprawnienia (capabilities), które proces będzie miał w czasie działania. Argumentem jest łańcuch znaków przekazywany bezpośrednio do funkcji cap_from_text(3). Wiem, że ten opis jest kiepski, jednakże użyteczność tej dyrektywy i tak nie będzie zbyt wielka, dopóki użytkownik nie przeczyta pliku README.capabilities.

Przykład:

capability cap_setuid=ep;

rlimit

Ta dyrektywa przyjmuje dwa argumenty. Pierwszy określa typ żądanego limitu - dostępne typy są podane niżej. Drugi argument przyjmuje jedną z dwu postaci, gdyż może być albo pojedynczą wartością numeryczną, co oznacza ustawienie zarówno miękkiego, jak i twardego limitu, albo może być podany następująco:

rlimit type {

soft x; hard y;
}

W tym przypadku twardy i miękki limit zostaną odpowiednio ustawione. W obu przypadkach można użyć wartości unlimited do usunięcia jakichkolwiek ograniczeń. Wartości są przekazywane bezpośrednio do wywołania systemowego setrlimit(2).

Typy:

cpu, fsize, data, stack, core, rss, nproc, nofile, memlock

Przykład:

rlimit cpu 15;

initgroups

Argumentem może być yes lub no. Ta dyrektywa powoduje, że w czasie uruchomiania usługi zostanie wywołana funkcja initgroups(3), która ustawia dodatkowe grupy usługi zgodne z plikiem /etc/group.

Przykład:

initgroups yes;

family

Dyrektywa określa rodzinę protokołów, w której rlinetd przypisze gniazda dla usługi. Obecnie może to być albo ipv4, albo ipv6. Jeśli nie podano, domyślna wartość zależy od systemu.

Przykład:

family ipv6;

banner

Ta dyrektywa pozwala przesłać zawartość pliku jako dane wyjściowe połączenia.

Przykład:

banner /etc/nologin;

echo

Ta dyrektywa pozwala przesłać poprzez połączenia dynamicznie wygenerowaną linię tekstu.

Przykład:

echo "500 Usługa niedostępna dla Twojego IP (%O)";

filter

Dyrektywa pozwala na podanie programu filtrowania gniazd do skojarzenia z gniazdem nasłuchiwania. Może zostać wygenerowany przez narzędzie takie jak lfscc(1).

Przykład:

filter /usr/local/lib/rlinetd/filters/privport;

chargen

Dyrektywa powoduje nieskończoną pętlę wypisywania danych do połączenia. Jeśli nie podano argumentu, przesyłany jest podzbiór znaków drukowalnych. Jednakże można podać nazwę pliku jako argument, co spowoduje przesyłanie w pętli zawartości tego pliku.

Przykład:

chargen /usr/local/lib/spam;

log "nazwa" {
...
}

Ta konstrukcja składniowa opisuje cel logowania. Parametr nazwa jest używany jako argument dyrektywy log w sekcjach service.

path

Określa ścieżkę do pliku logu.

Przykład:

path /var/log/service.log;

mode

Określa prawa dostępu do pliku logu. Argument musi być numeryczny i jeśli nie jest podany, to przyjmuje się 0640 jako wartość domyślną.

Przykład:

mode 0600;

user

Określa właściciela pliku logu i może zostać podane zarówno jako numeryczne ID, jak i jako

Przykład:

user adm;

group

Określa właściciela pliku logu i może zostać podane zarówno jako numeryczne ID, jak i jako

Przykład:

group adm;

defaults {

...
}

Ta konstrukcja przyjmuje takie same parametry jak deklaracja usługi (dyrektywa service), ale zamiast określać usługę, ustawia wartości domyślna dla wszystkich skonfigurowanych usług.

directory "ścieżka" "pasujące" "ignorowane";

Składnia określa katalog zawierający dodatkowe pliki konfiguracyjne do przetworzenia. Przetwarzanie tych plików rozpocznie się po zakończeniu przetwarzania bieżącego pliku. Argumenty pasujące i ignorowane są nieobowiązkowe, a jeśli zostaną podane, to są używane do filtrowania plików w podanym katalogu, Nazwy plików muszą pasować do wyrażenia regularnego pasujące i nie mogą pasować do wyrażenia regularnego ignorowane. Pliki zaczynające się od kropki (".") są zawsze pomijane. Katalogi nie są przetwarzane rekurencyjnie.

Modyfikatory tekstu

Jest kila zmiennych, które mogą być podstawione w argumentach niektórych dyrektyw. Chociaż można ich używać w tych samych miejscach, nie we wszystkich z nich informacje dostarczane przez te zmienne będą dostępne.

%O
Źródłowy adres IP połączenia.
%P
Źródłowy port połączenia.
%C
Całkowity użyty czas procesora.
%U
Czas procesora spędzony na wywoływaniu funkcji użytkownika.
%S
Systemowy czas CPU.
%r
Maksymalna ilość pamięci procesu w RAM-ie (resident set size).
%m
Rozmiar pamięci współdzielonej.
%d
Rozmiar danych niedzielonych.
%s
Niedzielony rozmiar stosu.
%f
Zwroty stron.
%F
Błędy stron.
%p
Wymiany.
%i
Operacje wejściowe na blokach.
%o
Operacje wyjściowe na blokach.
%n
Wysłane komunikaty.
%c
Odebrane komunikaty.
%k
Odebrane sygnały.
%w
Dobrowolne zmiany kontekstu.
%w
Wymuszone zmiany kontekstu.
%e
Kod zakończenia.
%t
Czas działania
%M
Bieżący czas podany jako sekundy od początku epoki (1980), przesłany jako 32-bitowa liczba w porządku sieciowym. Nie ma z tego absolutnie żadnego pożytku, z wyjątkiem implementowania funkcjonalności podobnej do tej dostępnej w inetd.
%I
Bieżące data i czas , w formacie ctime(3).

AUTOR

Ten podręcznik ekranowy napisał Mikolaj J. Habryn <[email protected]>, a zmodyfikował Robert Luberda <[email protected]>.