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łana 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";
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.
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.