Сетевые средства Linux - страница 56
Формат файла /etc/inetd.conf
Для настройки >inetd
используется конфигурационный файл >/etc/inetd.conf
. Если не принимать во внимание комментарии (строки, начинающиеся с символа >#
), то можно сказать, что содержимое файла >inetd.conf
представляет собой набор строк, каждая из которых определяет отдельный сервер. Пример записи, содержащейся в файле >/etc/inetd.conf
приведен ниже.
>telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
Каждая строка файла состоит из нескольких полей, которые отделяются друг от друга с помощью пробелов или символов табуляции.
• Имя сервера. Первое поле в строке идентифицирует протокол, используемый сервером. Имя протокола должно соответствовать имени, указанному в файле >/etc/services
. Например, обратившись к этому файлу, можно выяснить, что имени >telnet
соответствует значение >23/tcp
, т.е. сервер, поддерживающий протокол >telnet
, должен использовать для взаимодействия порт 23. Для того чтобы программа >inetd
могла управлять сервером, для этого сервера должна существовать запись в файле >/etc/services
. Очевидно, что, планируя запуск редко встречающегося сервера посредством >inetd
, надо позаботиться о том, чтобы соответствующая запись была включена в этот файл. Подавляющее большинство серверов изначально учтено в >/etc/services
.
• Тип гнезда. Второе поле указывает тип гнезда, используемого при поддержке протокола. Допустимы типы >stream
, >dgram
, >raw
, >rdm
и >seqpacket
.
• Тип протокола. Третье поле указывает тип протокола. В данном случае речь идет о нижележащем протоколе транспортного уровня, например TCP или UDP. Допустимые протоколы указаны в >/etc/protocols
, однако в подавляющем большинстве случаев в этом поле указывается значение >tcp
или udp.
• >wait
/>nowait
. Четвертое поле записи содержит одно из двух значений: >wait
или >nowait
. Значение >wait
имеет смысл только для дейтаграмм (тип гнезда >dgram
). В остальных случаях предполагается значение >nowait
. Большинство серверов, поддерживающих обмен с помощью дейтаграмм, связываются с гнездом и освобождают >inetd
для обслуживания последующих обращений. Эти серверы называются многопотоковыми (multi-threaded); для них в рассматриваемом здесь поле должно содержаться значение >nowait
. Серверы, которые связываются с гнездом, обрабатывают все данные, а затем по истечении времени тайм-аута завершают работу, называются однопотоковыми (single-threaded); для них в данном поле должно содержаться значение >wait
. В этом поле можно также задать числовое значение, отделив его от ключевого слова >wait
точкой, например >wait.60
. Число указывает максимальное количество серверов данного типа, которые >inetd
может загрузить в течение одной минуты. По умолчанию принимается значение, равное 40.
• Имя пользователя. Программа >inetd
может запустить сервер с привилегиями указанного пользователя. Это позволяет существенно повысить уровень безопасности системы. Ограничив права сервера необходимым минимумом, вы сокращаете возможности злоумышленников по незаконному проникновению в систему. Так, например, серверу Apache не требуются никакие специальные привилегии, поэтому его можно запускать с правами пользователя >nobody
либо определить права Apache, создав для него отдельную учетную запись. В приведенном выше примере указано имя >root
, так как привилегии этого пользователя необходимы для выполнения процедуры регистрации, которая осуществляется в начале Telnet-сеанса. Если к имени пользователя вы добавите имя группы, разделив эти имена точкой, сервер получит привилегии группы. Например, значение >nobody.nogroup
указывает на то, что сервер должен быть запущен с правами пользователя >nobody
и группы >nogroup
.
• Программа-сервер. Шестое поле содержит имя программы-сервера, которую должен запустить >inetd
, приняв запрос. В приведенном примере указано имя программы >/usr/sbin/tcpd
. В действительности >tcpd
— это не сервер, а программа, реализующая TCP Wrappers (назначение TCP Wrappers будет рассмотрено ниже). В большинстве дистрибутивных пакетов, в которых используется >inetd
, также применяется TCP Wrappers, т.е. серверы, поддерживаемые