Inetd супер-сервер
Часто, услуги предоставляются так называемыми daemons. Daemon является программой, которая открывает некоторый порт, и связь. Если это происходит, это создает дочерний процесс, который принимает связь, в то время как основной продолжает ждать дальнейших запросов. Это понятие имеет недостаток что для каждого предлагаемого обслуживания, daemon должен запускать те, которые слушают порте для связи, для которых это вообще означает потери способов системы подобно пространст
Таким образом, почти вся Un*x инсталляция запускает " супер- сервер ", который создает гнезда для ряда услуг, и слушает на них одновременно при использовании отобранного системного вызова (2). Когда отдаленный хост запрашивает одну из услуг, супер-сервер замечает этот и порождает другой сервер, точно установленный для этого порта.
Супер-сервер, обычно используемый - inetd, Internet Daemon. Это начинается при начальной загрузке системы, и берет список услуг, к которым он обращается из файла запуска, именованной /etc/inetd.conf. В дополнение к тем вызываемым серверам, там есть ряд тривиальных услуг, которые являются на сформировавшимся inetd, неппсрежственно вызываемым внутренние услуги. Они включают chargen который просто генерирует ряд знаков, и daytime который возвращают system's idea
Запись в этой картотеке состоит из единственной линии, сделанной из следующей области:
service type protocol wait user server cmdline
Значение каждой области следующие:
Service дает сервисное имя. Service name должно быть переведено к номеру порта, просматривая в файле services. Этот файл будет описан в разделе 10.3.
type определяет тип гнезда, любой поток (для связь- ориентируемых протоколов) или dgram (для датаграмных протоколов). TCP основанна на услугах, которые должны всегда использовать поток, в то время как UDP-основанные услуги должны всегда использовать dgram.
Protocol называется протоколом переноса, используемым обслуживанием. Это должно быть подходящим названием протокола, найденное в файле протоколов, также объяснено ниже.
wait эта опция применяется только на dgram гнездах. Это может быть также wait или nowait. Если wait определен, то inetd только выполнит один сервер для точно установленного порта в любое время. Иначе, это немедленно продолжит слушать на порте после извлечения сервера.
Это полезно для "единственно - связнных " серверов, которые читают все входящие датаграммы, и затем выходят. Большинство RPC серверов имеет этот тип и должны следовательно точно определить wait. Противоположный тип, "многопоточные " серверы, позволяет безграничному числу образцов, чтобы быть запущенными одновременно; но это редко когда используется. Эти серверы должны точно определить nowait.
Гнезда потока должны всегда использовать nowait.
User это является идентичностью входа в систему пользователя, объясненный ниже. Это будет часто root user, но некотпрые" услуги могут использовать различные account. Это - очень хорошая идея к применению принципа наименьшего количества привилегии здесь, который заявляет что Вы не должны запускать команду ниже привилегированного account если программа не требует этого для присущего функционирования. Для примера, NNTP сервер новостей будет запускать новости, пока ус риск защиты (типа tftp, или finger) будут управляться как nobody.
server дает полный путь программы сервера, которая будет выполнена.
cmdline это- командная строка, которую нужно запустить на сервере. Она включает аргумент 0, который является названием команды. Обычно, это не будет названием программы сервера, если программа ведет себя по-другому, когда вызывается с различным именем.
Эта область пуста для внутренних услуг.
Типовой inetd.conf файл изображен на рисунке 10.1. Finger service прокомментированног так чтобы это было не доступно. Это часто выполняется из соображений безопасности, потому что может использоваться нападавшими для того, чтобы получить имя пользовател и на вашей системе.
Tftp имзображено прокомментированным также. Tftp осуществляет Примитивный Протокол Передачи файла, который позволяет передавать любые всемирно - читаемые файлы из вашей системы без пароля. Это особенно вредно для файла /etc/passwd, даже более того, когда Вы не используйте теневой пароль.
TFTP обычно используется клиентурой без диска и X терминалами при загрузке их кода из сервера при начальной загрузке. Если Вы должны запустить tftpd для этой проблемы, удостоверитесь, что ограниченная область действия к директориям клиентов будет восстановлена из файлов, добавляя те названия каталогов к команде tftpd's линии. Это показано во второй tftp линии в примере.