/etc/inetd.conf
elenca questi server con le rispettive porte. Il comando inetd
rimane in ascolto, quando rileva una connessione verso una qualsiasi di queste porte, esegue il programma server corrispondente.
/etc/inetd.conf
descrive un server attraverso sette campi (separati da spazi):
/etc/services
).
stream
per una connessione TCP, dgram
per datagrammi UDP.
tcp
o udp
.
wait
o nowait
, per dire a inetd
se deve attendere o meno la fine del processo avviato prima di accettare un'altra connessione. Per le connessioni TCP, facilmente usabili in multiplexing, di solito si può usare nowait
. Per i programmi che rispondono su UDP, si dovrebbe utilizzare nowait
solo se il server è in grado di gestire diverse connessioni in parallelo. È possibile aggiungere a questo campo un suffisso con un punto, seguito dal numero massimo di connessioni autorizzate al minuto (il limite predefinito è 256).
argv[0]
in C).
Esempio 9.1. Estratto dal file /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
viene frequentemente utilizzato nel file /etc/inetd.conf
. Consente di limitare le connessioni in entrata mediante l'applicazione di regole di controllo degli accessi, documentate nella pagina di manuale hosts_access(5), e che sono configurate nei file /etc/hosts.allow
e /etc/hosts.deny
. Una volta determinato che la connessione è autorizzata, tcpd
esegue il server reale (come in.fingerd
nel nostro esempio). È bene notare che tcpd
si basa sul nome con cui è stato invocato (cioè il primo argomento, argv[0]
) per identificare l'effettivo programma da eseguire. Perciò non si dovrebbe iniziare la lista degli argomenti con tcpd
ma con il programma a cui fare da wrapper.