Файл содержит вхождения(записи) следующего вида:
service <service_name>
{
- <attribute> <assign_op> <value> <value> ...
...
Оператор присвоенияr, assign_op, может быть один из '=', '+=', '-='. Большинство атрибутов поддерживают только один оператор присваивания, '='. Атрибуты являющиеся наборами значений поддерживают все операторы присваивания. Для любых атрибутов, '+=' означает добавление значения к набору и '-=' означает удаление значения из набора. Список этих атрибутов должен быть указан после того как все атрибуты описаны.
Каждое вхождение определяет сервис идентифицируемый service_name. Далее следует список атрибутов:
Нет необходимости указывать все вышеперечисленные параметры для каждого сервиса. Необходимыми являются следующие:
Следующие атрибуты поддерживают все операторы присваивания:
Также эти атрибуты могут появляться более чем однажды в записи описывающей
сервис.
Остальные атрибуты поддерживают только оператор '=' и могут появляться
в секции описывающей сервис лишь однажды.
Файл конфигурации может содержать секцию для задания значений по-умолчанию, она имеет вид:
defaults
{
- <атрибут> = <значение> <значение> ...
...
Эта секция задать значения атрибутов для всех секций сервисов где явно не описаны эти атрибуты. Возможные атрибуты:
Атрибуты с куммулятивным эффектом можно указывать много раз, причем
значения будут накапливаться (то есть '=' делает тоже самое что и '+=').
За исключением disabled они имеют то же значение как если бы были
указаны в секции сервиса.
disabled определяет сервисы которые не доступны даже если они имеют
собственные секции в файле конфигурации. Это позволяет быстро
переконфигурировать xinetd указав нежелательные сервисы как аргументы для
disabled вместо того чтобы комментировать соответсивующие секции.
Значением этого атрибута является список разделенных пробелами идентификаторов
сервиса (id)
enabled
имеет те же свойства что и disabled. Разница в том что
enabled список разрешенных сервисов. Если атрибут
enabled указан, то только разрешенные сервисы будут доступны.
Если enabled не указан, то подразумевается что все сервисы разрешены
за исключением перечисленных в disabled.
xinetd предоставляет следующие сервисы собственными силами (как stream так datagram based): echo, time, daytime, chargen, and discard. На эти сервисы действуют те же ограничения доступа как и на остальных за исключением того что в этом случает xinetd не порождает новый процесс. По этому для этих сервисов (time, daytime, and the datagram-based echo, chargen, and discard) нет ограничений на количество запускаемых процессов.
xinetd также предоставляет два UNLISTED внутренних stream-based сервиса: servers и services. Первый из вышеупомянутых предоставляет информацию о выполняющихся серверах, а следующий предоставляет список доступных в данный момент сервисов. Список содержит по одному сервису в строке и в каждой строке содержится имя сервиса, протокол (e.g. "tcp") и номер порта.
Существует так же администативный интерфейс выполненный в виде внутреннего сервиса. Зарезервированным именем сервиса является "xadmin" и он всегда является внутренним сервисом. Для этого сервиса нужно указать номер порта и вероятно задать правила доступа, потому что никакой парольной защиты не существует. Используя телнет на этот порт можно получить у xinetd некоторую информацию.
Datagram size (bytes) | Latency (msec) |
64 | 1.19 |
256 | 1.51 |
1024 | 1.51 |
4096 | 3.58 |
Bytes sent | Bandwidth reduction |
10000x64 | 941 (1.2%) |
10000x256 | 4,231 (1.8%) |
10000x1024 | 319,300 (39.5%) |
10000x4096 | 824,461 (62.1%) |
#
# Sample configuration file for xinetd
# Примерный файл конфигурации
#
defaults
{
- log_type
- = FILE /var/log/servicelog
- log_on_success
- = PID
- log_on_failure
- = HOST RECORD
- only_from
- = 128.138.193.0 128.138.204.0 128.138.209.0
- only_from
- = 128.138.252.1
- instances
- = 10
- disabled
- = rstatd
}
#
# Note 1: the protocol attribute is not required
# Замечание 1: атрибут протокола не требуется
#
# Note 2: the instances attribute overrides the default
# Замечание 2: Атрибуты в секциях переопределяют дефолтовые
#
service login
{
- socket_type
- = stream
- protocol
- = tcp
- wait
- = no
- user
- = root
- server
- = /usr/etc/in.rlogind
- instances
- = UNLIMITED
}
#
# Note 1: the instances attribute overrides the default
# Note 2: the log_on_success flags are augmented
# Замечание 2: к флагу log_on_success добавлено значение
#
service shell
{
- socket_type
- = stream
- wait
- = no
- user
- = root
- instances
- = UNLIMITED
- server
- = /usr/etc/in.rshd
- log_on_success
- += HOST RECORD
}
service ftp
{
- socket_type
- = stream
- wait
- = no
- nice
- = 10
- user
- = root
- server
- = /usr/etc/in.ftpd
- server_args
- = -l
- instances
- = 4
- log_on_success
- += DURATION HOST USERID
- access_times
- = 2:00-9:00 12:00-24:00
}
#
# This entry and the next one specify internal services. Since this
# is the same service using a different socket type, the id attribute
# is used to uniquely identify each entry
#
# Эта секция а также следующая описывают внутренние сервисы. Здесь одинаковые
# сервисы используют различные типы сокетов, и атрибут id используется для
# однозначного определения каждой секции
#
service echo
{
- id
- = echo-stream
- type
- = INTERNAL
- socket_type
- = stream
- user
- = root
- wait
- = no
}
service echo
{
- id
- = echo-dgram
- type
- = INTERNAL
- socket_type
- = dgram
- user
- = root
- wait
- = no
}
service servers
{
- type
- = INTERNAL UNLISTED
- protocol
- = tcp
- port
- = 9099
- socket_type
- = stream
- wait
- = no
}
#
# Sample RPC service
# Пример RPC сервиса
#
service rstatd
{
- type
- = RPC
- socket_type
- = dgram
- protocol
- = udp
- server
- = /usr/etc/rpc.rstatd
- wait
- = yes
- user
- = root
- rpc_version
- = 2-4
- env
- = LD_LIBRARY_PATH=/etc/securelib
}
#
# Sample unlisted service
# Пример umlisted сервиса
#
service unlisted
{
- type
- = UNLISTED
- socket_type
- = stream
- protocol
- = tcp
- wait
- = no
- server
- = /home/user/some_server
- port
- = 20020
}
xinetd.log(5)
Postel J., Echo Protocol, RFC 862, May 1983
Postel J., Discard Protocol, RFC 863, May 1983
Postel J., Character Generator Protocol, RFC 864, May 1983
Postel J., Daytime Protocol, RFC 867, May 1983
Postel J., Harrenstien K., Time Protocol, RFC 868, May 1983
StJohns M., Identification Protocol, RFC 1413, February 1993
Дополнительные ids групп не поддерживаются.
(Supplementary group ids are not supported.)
Если флаг INTERCEPT не используется, контроль адресов удаленного хоста не производится когда wait установлен в yes и socket_type - stream.
Если флаг INTERCEPT не используется, контроль адреса удаленного хоста для сервисов у которых wait - yes и socket_type - dgram выполняется только для первого пакета. Сервер может принимать пакеты с хостов не перечисленных с списках контроля доступа. Это может случаться с RPC сервисами.
Нет возможности поместить SPACE в переменную окружения.
Когда wait - yes и socket_type - stream, сокет переданный серверу может только принимать соединения (can only accept connections).
Флаг INTERCEPT не поддерживается для внутренних и multi-threaded сервисов.