/etc/inetd.conf
перечисляются эти серверы и обычно используемые ими порты. Команда inetd
слушает их все; когда она обнаруживает соединение с любым таким портом, она запускает соответствующую серверную программу.
/etc/inetd.conf
описывает сервер в сми полях (разделённых пробелами):
/etc/services
).
stream
для TCP-соединения, dgram
для UDP-датаграмм.
tcp
или udp
.
wait
или nowait
, сообщающих inetd
, следует ли ждать завершения запущенного процесса прежде чем принимать новое соединение. Для TCP-соединений, которые легко мультиплексируются, обычно можно использовать nowait
. Для программ, отвечающих через UDP, следует использовать nowait
только если сервер способен управляться с несколькими соединениями параллельно. В конце этой опции можно добавить точку, и после неё указать максимально разрешённое число сединений в минуту (по умолчанию используется ограничение в 256 соединений).
argv[0]
в Си).
Пример 9.1. Выдержка из /etc/inetd.conf
talk dgram udp wait nobody.tty /usr/sbin/in.talkd in.talkd finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd ident stream tcp nowait nobody /usr/sbin/identd identd -i
tcpd
часто используется в файле /etc/inetd.conf
. Она позволяет ограничить входящие сообщения, применяя правила контроля доступа, описанные на странице руководства hosts_access(5) и настраиваемые в файлах /etc/hosts.allow
и /etc/hosts.deny
. Когда подтверждается, что соединение разрешено, tcpd
запускает настоящий сервер (in.fingerd
в нашем примере). Для tcpd
ничего не стоит определить, какой сервис следует запустить, по имени, под которым он был вызван (которое является первым аргументом, argv[0]
). Поэтому список аргументов должен начинаться не с tcpd
, а с программы, для которой он служит обёрткой.