table of contents
other languages
INETD(8) | System Manager's Manual | INETD(8) |
NOME¶
inetd
—
internet “super-server”
SINTASSI¶
inetd
[-d
-R
rateconfiguration_files
...
]
DESCRIZIONE¶
Il programmainetd
deve essere eseguito
all'avvio da /etc/rc (vedere
rc(8)). Esso quindi resta in ascolto di
connessioni su certi socket internet. Quando su uno dei suoi socket viene
trovata una connessione, esso decide a quale servizio il socket corrisponde, e
invoca il programma per servire la richiesta. Il programma server è
invocato con il socket del servizio come suo standard input, output e
descrittori di errore. Dopo che il programma è finito
inetd
continua ad ascoltare il socket
(tranne in alcuni casi che verranno descritti sotto). Essenzialmente
inetd
permette l'esecuzione di un demone
per invocarne molti altri, riducendo il carico del sistema.
Opzioni disponibili per inetd:
-d,
---debug
- Attiva il debugging.
-R,
---rate
rate- Specifica il numero massimo di volte che un servizio può essere invocato in un minuto; il default è 1000.
---version
- Mostra la versione.
---help
- Mostra l'help.
inetd
legge le sue
informazioni di configurazione da un percorso di configurazione sulla linea di
comando, per default, /etc/inetd.conf and
/etc/initd.d. Se il percorso di configuraizone è una directory,
tutti i file nella directory sono letti come un file di configurazione. Tutti
i file di configurazione sono letti e uniti. Ci deve essere una voce per
ciascun campo nel file di confiuraizone, con voci per ciascun campo separate
da un tab o uno spazio. Commenti sono segnati da un ``#'' all'inizio di una
linea. Ci deve essere una voce per ciascun campo. I campi del file di
configurazione sono i seguenti:
nome del servizio tipo di socket protocollo wait/nowait utente programma server argomenti del programma server
inetd
può avviare: standard e TCPMUX. Un servizio standard ha una porta nota
assegnata ad esso; esso può essere un servizio che implementa uno
standard ufficiale Internet o è un servizio specifico BSD. Come
descritto in RFC 1078, i servizi TCPMUX sono servizi non standard che non
hanno una porta nota assegnata ad essi. Essi sono invocati da
inetd
quando un programma si connette alla
porta nota “tcpmux” e specifica il nome del servizio. Questa
caratteristica è utile per aggiungere server sviluppati localmente.
Il campo service-name è il nome di un
servizio valido nel file /etc/services. Per
i servizi “interni” (discussi sotto), il servizio nome
deve essere il nome ufficiale del servizio (che
è il primo campo in /etc/services).
Per i servizi TCPMUX, il valore del campo
service-name consiste nella stringa
“tcpmux” seguita da uno slash e il nome del servizio scelto
localmente. I nomi del servizio elencati in
/etc/services e il nome
“help” sono riservati. Provare a scegliere nomi unici pir i
propri servizi TCPMUX prefissandoli con il nome della propria organizzazione e
aggiungendo come suffisso un numero di versione.
Il socket-type deve essere uno tra
“stream”, “dgram”, “raw”,
“rdm”, o “seqpacket”, in funzione di quale socket
sia uno stream, datagramma, raw, messaggio recapitato affidabilmente, o socket
sequenced packet. I servizi TCPMUX devono usare “stream”.
Il protocollo deve essere un protocollo valido come
dato in /etc/protocols. Esempi possono
essere “tcp” o “udp”. I servizi TCPMUX devono
usare “tcp”.
Il campo wait/nowait specifica se il server che
è invocato da inetd si approprierà del socket associato con il
punto di accesso del servizio, e quindi se
inetd
deve aspettare che il server esca
prima di ascoltare nuove richieste di servizio. I server datagrammi devono
usare “wait”, poiché essi sono sempre invocati con il
datagramma socket originale legato all'indirizzo del servizio specificato.
Questi server devono leggere almento un datagramma dal socket prima di uscire.
Se un server datagramma si connette al suo peer, lliberando il socket in modo
che inetd
possa ricevere ulteriori messaggi
sul socket, si dice che esso è un server
“multi-threaded”; esso deve leggere un datagramma dal socket e
creare un nuovo socket connesso al peer. Può esserci un fork, e il
genitore deve quindi uscire per permettere a
inetd
di verificare nuove richieste di
servizio per generare nuovi server. I server datagrammi che processano tutti i
datagrammi in arrivo su un socket ed eventuali time out sono detti
“single-threaded”. Comsat(8),
(biff(1)) e talkd(8)
sono entrambi esempi dell'ultimo tipo di server datagramma.
Tftpd(8) è un esempio di un server
datagramma multi-threaded.
I server che usano stream socket generalmente sono multi-threaded e usano il
campo “nowait”. Le richieste di connessione per questi servizi
sono accettate da inetd
, e al server
è dato solo il nuovo socket accettato connesso a un client del
servizio. La maggior parte dei servizi stream-based operano in questo modo. I
server stream-based che usano “wait” sono avviati con il
servizio di ascolto del socket, e devono accettare almeno una richiesta di
connessione prima di uscire. Tali server normalmente accetteranno e
processeranno le richieste di connessione in arrivo fino a un timeout. I
servizi TCPMUX devono usare “nowait”.
Il campo user deve contenere il nome utente
dell'utente il cui server deve funzionare. Questo permette che ai server
vengano dati permessi minori di root.
Il campo server-program deve contenere il percorso
del programma che viene eseguito da inetd
quando viene rilevata una richiesta sul suo socket. Se
inetd
fornisce il servizio internamente,
questo campo deve essere “internal”.
Gli argomenti del programma server devono essere
dei normali argomenti, che iniziano con argv[0], che è il nome del
programma. Il servizio è fornito internamente, la parola
“internal” deve prendere il posto di questo campo.
Il programma inetd
fornisce internamente
numerosi servizi “elementari” con l'uso delle sue routine.
Questi servizi sono “echo”, “discard”,
“chargen” (generatore caratteri), “daytime” (ora
leggibile dell'uomo), e “time” (tempo leggibile dalla macchina,
nella forma del numero di secondi a partire dalla mezzanotte dell'1 gennaio
1900). Tutti questi servizi sono basati su tcp. Per dettagli su questi servizi
consultare le RFC appropriate dal Network Information Center.
Il programma inetd
rilegge il suo file di
configurazione quando riceve un segnale hangup,
SIGHUP
. I servizi possono essere aggiunti,
cancellati o modificati quando il file di configurazione viene riletto.
TCPMUX¶
RFC 1078 descrive il protocollo TCPMUX: ``A TCP client connects to a foreign host on TCP port 1. It sends the service name followed by a carriage-return line-feed <CRLF>. The service name is never case sensitive. The server replies with a single character indicating positive (+) or negative (-) acknowledgment, immediately followed by an optional message of explanation, terminated with a <CRLF>. If the reply was positive, the selected protocol begins; otherwise the connection is closed.'' Il programma è passato alla connessione TCP come file descrittori 0 e 1. Se il nome del servizio TCPMUX comincia con un ``+'',inetd
restituisce la risposta positiva per
il programma. Questo permette di invocare programmi che usano stdin/stdout
senza mettere in essi alcun codice speciale del server.
Il nome del servizio speciale “help” fa sì che
inetd
elenchi i servizi TCPMUX in
inetd.conf.
ESEMPI¶
Qui ci sono numerosi esempi di campi del servizio per vari tipi di servizio:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l ntalk dgram udp wait root /usr/libexec/ntalkd ntalkd tcpmux/+date stream tcp nowait guest /bin/date date tcpmux/phonebook stream tcp nowait guest /usr/local/bin/phonebook phonebook
MESSAGGI DI ERRORE¶
Il serverinetd
fa il log dei messaggi di
errore usando syslog(3). Messaggi di errore
importanti e le loro spiegazioni sono:
service/protocol server failing (looping), service terminated.
-R
service/protocol: No such user 'user', service ignored service/protocol: getpwnam: user: No such user
inetd
(ri)legge il file di configurazione.
Il secondo messaggio avviene quando il servizio viene invocato.
service: can't set uid number service: can't set gid number
VEDERE ANCHE¶
comsat(8), fingerd(8), ftpd(8), rexecd(8), rlogind(8), rshd(8), telnetd(8), tftpd(8)HISTORY¶
Il comandoinetd
è apparso nella
4.3BSD. TCPMUX è basato su codice e
documentazione di Mark Lottor.1 giugno 1994 | BSD 4.4 |