Inetd e Xinetd

Loris Tissino

9 luglio 2009

Servizi, démoni e processi serventi

Per servizio si intende un programma che, su richiesta di un programma cliente, effettua qualche tipo di lavoro (e solitamente fornisce un feedback). Per quanto riguarda questa definizone, non importano i dettagli tecnici dell'implementazione.

Per démone (daemon) si intende un programma che è in esecuzione continua in background, in attesa di richieste di attivazione da parte di qualche cliente.

I servizi possono essere implementati:

La differenza fondamentale consiste nel fatto che i servizi on-demand non sono costantemente in esecuzione, ma vengono invocati solo quando necessario.

Il superdemone

Ad occuparsi dell'invocazione dei processi serventi, quando necessario, è un super-démone, che rimane in ascolto "per conto terzi".

Questo super-démone è, a seconda della distribuzione/configurazione, inetd oppure xinetd.

Concettualmente, i due superdemoni sono simili. La differenza sta in una configurazione più precisa che si può avere con il secondo (non a caso: la x sta per extended).

La configurazione è:

Configurazione di un servizio gestito dal super-démone

La configurazione di un servizio stand-alone (nell'esempio, swat) può essere fatta in uno dei modi seguenti.

Se si usa inetd, con una riga tipo:

swat            stream  tcp     nowait.400      root    /usr/sbin/tcpd  /usr/sbin/swat

Se si usa xinetd, con un file tipo:

# default: off
service swat
{
    disable = no
    port        = 901
    socket_type = stream
    wait        = no
    only_from   = 127.0.0.1
    user        = root
    server      = /usr/sbin/swat
    log_on_failure  += USERID
}    

TCP wrappers

È possibile configurare da quali host è possibile la connessione a servizi gestiti dal super-démone (o che usano la libreria librwap.

I due file che controllano le connessioni possibili sono:

Valgono i seguenti criteri:

Per dettagli sui file, si veda hosts_access(5).