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.
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 è:
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
}
È 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)
.