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;
-
interface 192.168.1.1, 192.168.1.2;
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;
-
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ę.
- ...
-
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;
-
Określa ścieżkę do pliku logu.
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]>.