RLINETD.CONF(5)

NAZWA
rlientd.conf - 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ł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";

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 nazwa użytkownika.

        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 nazwa grupy.

        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).

ZOBACZ TAKŻE
rlinetd(8), hosts_access(5)

AUTOR
Ten podręcznik ekranowy napisał Mikolaj J. Habryn <dichro-doc@rcpt.to>, a zmodyfikował Robert Luberda <robert@debian.org>.