Inetd
should be run at boot time by
/etc/rc.local
(see
rc 8 ) .
If your
init 8
can respawn arbitrary daemons,
inetd
can be run from init instead; then init will restart it if it crashes.
You must use the
i
option to prevent
inetd
from backgrounding itself, or init will become confused.
When running,
inetd listens for connections on certain
internet sockets. When a connection is found on one of its sockets,
it looks up what service the socket corresponds to, and invokes a
program to service the request. After the program is finished, it
will continue to listen on the socket, except in some special cases
which will be described below. Essentially,
inetd
allows running one daemon to invoke several others,
reducing load on the system.
The options available for
inetd:
-tag -width Ds
Fl d
Turns on several kinds of debugging and make inetd behave if run in a
debugger. Also implies
i .
Fl i
Do not background; for running from
init 8 .
Fl q Ar queuelength
Sets the size of the socket listen queue to the specified
value. Default is 128.
Upon execution,
inetd
reads its configuration information from a configuration
file which, by default, is
/etc/inetd.conf .
There must be an entry for each field of the configuration
file, with entries for each field separated by a tab or
a space. Comments are denoted by a ``#'' at the beginning
of a line. There must be an entry for each field. The
fields of the configuration file are as follows:
-unfilled -offset indent -compact
service name
socket type
protocol
wait/nowait[.max]
user[.group]
server program
server program arguments
To specify an
Sun-RPC
based service, the entry would contain these fields.
-unfilled -offset indent -compact
service name/version
socket type
rpc/protocol
wait/nowait[.max]
user[.group]
server program
server program arguments
The
service-name
entry is the name of a valid service in
the file
/etc/services .
For
internal
services (discussed below), the service
name
must
be the official name of the service (that is, the first entry in
/etc/services ) .
When used to specify a
Sun-RPC
based service, this field is a valid RPC service name in
the file
/etc/rpc .
The part on the right of the
/
is the RPC version number. This
can simply be a single numeric argument or a range of versions.
A range is bounded by the low version to the high version -
rusers/1-3 .
The
socket-type
should be one of
stream ,
dgram ,
raw ,
rdm ,
or
seqpacket ,
depending on whether the socket is a stream, datagram, raw,
reliably delivered message, or sequenced packet socket.
The
protocol
must be a valid protocol as given in
/etc/protocols .
Examples might be
tcp
or
udp .
Rpc based services are specified with the
rpc/tcp
or
rpc/udp
service type.
The
wait/nowait
entry is applicable to datagram sockets only (other sockets should
have a
nowait
entry in this space). If a datagram server connects
to its peer, freeing the socket so
inetd
can received further messages on the socket, it is said to be
a
multi-threaded
server, and should use the
nowait
entry. For datagram servers which process all incoming datagrams
on a socket and eventually time out, the server is said to be
single-threaded
and should use a
wait
entry.
Comsat 8
Xr biff 1
and
talkd 8
are both examples of the latter type of
datagram server.
Tftpd 8
is an exception; it is a datagram server that establishes pseudo-connections.
It must be listed as
wait
in order to avoid a race;
the server reads the first packet, creates a new socket,
and then forks and exits to allow
inetd
to check for new service requests to spawn new servers.
The optional
max
suffix (separated from
wait
or
nowait
by a dot) specifies the maximum number of server instances that may be
spawned from
inetd
within an interval of 60 seconds. When omitted,
max
defaults to 40.
The
user
entry should contain the user name of the user as whom the server
should run. This allows for servers to be given less permission
than root. An optional group name can be specified by appending a dot to
the user name followed by the group name. This allows for servers to run with
a different (primary) group id than specified in the password file. If a group
is specified and user is not root, the supplementary groups associated with
that user will still be set.
The
server-program
entry should contain the pathname of the program which is to be
executed by
inetd
when a request is found on its socket. If
inetd
provides this service internally, this entry should
be
internal .
The
server program arguments
should be just as arguments
normally are, starting with argv[0], which is the name of
the program. If the service is provided internally, the
word
internal
should take the place of this entry.
Inetd
provides several
trivial
services internally by use of
routines within itself. These services are
echo ,
discard ,
chargen
(character generator),
daytime
(human readable time), and
time
(machine readable time,
in the form of the number of seconds since midnight, January
1, 1900). All of these services are tcp based. For
details of these services, consult the appropriate
RFC
from the Network Information Center.
Inetd
rereads its configuration file when it receives a hangup signal,
SIGHUP .
Services may be added, deleted or modified when the configuration file
is reread.
Inetd
creates a file
/var/run/inetd.pid
that contains its process identifier.