inetd
(souvent appelé « super-serveur Internet ») est en réalité un serveur de serveurs, employé pour invoquer à la demande les serveurs rarement employés qui ne fonctionnent donc pas en permanence.
/etc/inetd.conf
donne la liste de ces serveurs et de leurs ports habituels, qu'inetd
écoute tous ; dès qu'il détecte une connexion sur l'un d'entre eux, il exécute le programme du serveur correspondant.
/etc/inetd.conf
décrit un service par sept champs (séparés par des blancs):
/etc/services
).
stream
pour une connexion TCP, dgram
pour des datagrammes UDP .
tcp
ou udp
.
wait
ou nowait
, pour signifier à inetd
qu'il doit, ou non, attendre la fin du processus lancé avant d'accepter une autre connexion. Pour les connexions TCP, facilement multiplexables, on pourra généralement utiliser nowait
. Pour les programmes répondant sur UDP, il ne faut retenir nowait
que si le serveur est capable de gérer plusieurs connexions en parallèle. On pourra suffixer ce champ d'un point suivi du nombre maximum de connexions autorisées par minute (la limite par défaut étant de 256).
argv[0]
en C).
Exemple 9.1. Extrait de /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
est souvent employé dans le fichier /etc/inetd.conf
. Il permet de restreindre les connexions entrantes en appliquant des règles de contrôle, documentées dans la page de manuel hosts_access(5) et qui se configurent dans les fichiers /etc/hosts.allow
et /etc/hosts.deny
. Une fois qu'il a été déterminé que la connexion est autorisée, tcpd
exécute à son tour le serveur réellement demandé (comme in.fingerd
dans notre exemple).