1 .\" Copyright (c) 1985, 1991, 1993, 1994
2 .\" The Regents of the University of California. All rights reserved.
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\" notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\" notice, this list of conditions and the following disclaimer in the
11 .\" documentation and/or other materials provided with the distribution.
12 .\" 3. Neither the name of the University nor the names of its contributors
13 .\" may be used to endorse or promote products derived from this software
14 .\" without specific prior written permission.
16 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" from: @(#)inetd.8 8.3 (Berkeley) 4/13/94
29 .\" $FreeBSD: src/usr.sbin/inetd/inetd.8,v 1.46.2.13 2003/03/12 22:08:14 trhodes Exp $
46 .Op Fl a Ar address | hostname
50 .Op Ar configuration file
54 utility should be run at boot time by
58 It then listens for connections on certain
59 internet sockets. When a connection is found on one
60 of its sockets, it decides what service the socket
61 corresponds to, and invokes a program to service the request.
62 The server program is invoked with the service socket
63 as its standard input, output and error descriptors.
67 continues to listen on the socket (except in some cases which
68 will be described below). Essentially,
70 allows running one daemon to invoke several others,
71 reducing load on the system.
73 The following options are available:
74 .Bl -tag -width indent
78 Turn on logging of successful connections.
80 Turn on TCP Wrapping for external services.
82 .Sx "IMPLEMENTATION NOTES"
83 section for more information on TCP Wrappers support.
85 Turn on TCP Wrapping for internal services which are built into
88 Specify the default maximum number of
89 simultaneous invocations of each service;
90 the default is unlimited.
91 May be overridden on a per-service basis with the "max-child"
94 Specify the default maximum number of times a service can be invoked
95 from a single IP address in one minute; the default is unlimited.
96 May be overridden on a per-service basis with the
97 "max-connections-per-ip-per-minute" parameter.
99 Specify the maximum number of times a service can be invoked
100 in one minute; the default is 256.
101 A rate of 0 allows an unlimited number of invocations.
103 Specify the default maximum number of
104 simultaneous invocations of each service from a single IP address;
105 the default is unlimited.
106 May be overridden on a per-service basis with the "max-child-per-ip"
109 Specify one specific IP address to bind to.
110 Alternatively, a hostname can be specified,
111 in which case the IPv4 or IPv6 address
112 which corresponds to that hostname is used.
113 Usually a hostname is specified when
117 in which case the hostname corresponds to the
121 When hostname specification is used
122 and both IPv4 and IPv6 bindings are desired,
123 one entry with the appropriate
125 type for each binding
126 is required for each service in
127 .Pa /etc/inetd.conf .
129 a TCP-based service would need two entries,
136 See the explanation of the
141 Specify an alternate file in which to store the process ID.
146 reads its configuration information from a configuration
147 file which, by default, is
148 .Pa /etc/inetd.conf .
149 There must be an entry for each field of the configuration
150 file, with entries for each field separated by a tab or
151 a space. Comments are denoted by a
154 of a line. There must be an entry for each field. The
155 fields of the configuration file are as follows:
157 .Bd -unfilled -offset indent -compact
161 {wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]
162 user[:group][/login-class]
164 server program arguments
168 .Tn "ONC RPC" Ns -based
169 service, the entry would contain these fields:
171 .Bd -unfilled -offset indent -compact
175 user[:group][/login-class]
177 server program arguments
180 There are two types of services that
182 can start: standard and TCPMUX.
183 A standard service has a well-known port assigned to it;
184 it may be a service that implements an official Internet standard or is a
189 TCPMUX services are nonstandard services that do not have a
190 well-known port assigned to them.
191 They are invoked from
193 when a program connects to the
195 well-known port and specifies
197 This feature is useful for adding locally-developed servers.
198 TCPMUX requests are only accepted when the multiplexor service itself
199 is enabled, above and beyond and specific TCPMUX-based servers; see the
200 discussion of internal services below.
204 entry is the name of a valid service in
207 or the specification of a
209 domain socket (see below).
212 services (discussed below), the service
215 be the official name of the service (that is, the first entry in
216 .Pa /etc/services ) .
217 When used to specify an
218 .Tn "ONC RPC" Ns -based
219 service, this field is a valid RPC service name in
222 The part on the right of the
224 is the RPC version number.
226 can simply be a single numeric argument or a range of versions.
227 A range is bounded by the low version to the high version -
229 For TCPMUX services, the value of the
231 field consists of the string
233 followed by a slash and the
234 locally-chosen service name.
235 The service names listed in
240 Try to choose unique names for your TCPMUX services by prefixing them with
241 your organization's name and suffixing them with a version number.
252 depending on whether the socket is a stream, datagram, raw,
253 reliably delivered message, or sequenced packet socket.
254 TCPMUX services must use
259 must be a valid protocol or
265 both of which imply IPv4 for backward compatibility.
280 specify that the entry accepts both IPv4 and IPv6 connections
284 If it is desired that the service is reachable via T/TCP, one should
287 which implies IPv4 for backward compatibility.
290 specifies IPv4 only, while
295 specify that the entry accepts both IPv6 and IPv6 connections
300 (for which only IPv4 is supported at this time)
301 are specified with the
306 TCPMUX services must use
315 entry specifies whether the server that is invoked by
318 the socket associated with the service access point, and thus whether
320 should wait for the server to exit before listening for new service
322 Datagram servers must use
324 as they are always invoked with the original datagram socket bound
325 to the specified service address.
326 These servers must read at least one datagram from the socket
328 If a datagram server connects
329 to its peer, freeing the socket so
331 can receive further messages on the socket, it is said to be
335 it should read one datagram from the socket and create a new socket
336 connected to the peer.
337 It should fork, and the parent should then exit
340 to check for new service requests to spawn new servers.
341 Datagram servers which process all incoming datagrams
342 on a socket and eventually time out are said to be
343 .Dq single-threaded .
348 are both examples of the latter type of
351 is an example of a multi-threaded datagram server.
353 Servers using stream sockets generally are multi-threaded and
357 Connection requests for these services are accepted by
359 and the server is given only the newly-accepted socket connected
360 to a client of the service.
361 Most stream-based services operate in this manner.
362 Stream-based servers that use
364 are started with the listening service socket, and must accept
365 at least one connection request before exiting.
366 Such a server would normally accept and process incoming connection
367 requests until a timeout.
368 TCPMUX services must use
371 The maximum number of outstanding child processes (or
375 service may be explicitly specified by appending a
377 followed by the number to the
381 (or if a value of zero is specified) there is no maximum.
383 once the maximum is reached, further connection attempts will be
384 queued up until an existing child process exits.
388 mode, although a value other than one (the
389 default) might not make sense in some cases.
390 You can also specify the maximum number of connections per minute
391 for a given IP address by appending
394 followed by the number to the maximum number of
395 outstanding child processes.
396 Once the maximum is reached, further
397 connections from this IP address will be dropped until the end of the
399 In addition, you can specify the maximum number of simultaneous
400 invocations of each service from a single IP address by appending a
402 followed by the number to the maximum number of outstanding child
403 processes. Once the maximum is reached, further connections from this
404 IP address will be dropped.
408 entry should contain the user name of the user as whom the server
409 should run. This allows for servers to be given less permission
415 allows to specify group name different
416 than default group for this user.
421 allows to specify login class different
428 entry should contain the pathname of the program which is to be
431 when a request is found on its socket. If
433 provides this service internally, this entry should
438 .Em server program arguments
439 should be just as arguments
440 normally are, starting with argv[0], which is the name of
441 the program. If the service is provided internally, the
443 of the service (and any arguments to it) or the word
445 should take the place of this entry.
447 Currently, the only internal service to take arguments is
449 Without options, the service will always return
450 .Dq ERROR\ : HIDDEN-USER .
451 The available arguments to this service that alter its behavior are:
452 .Bl -tag -width indent
462 option discussed below),
463 return this username instead of an error
465 for either socket credentials or the username.
469 return this username for every request.
470 This is primarily useful when running this service on a NAT machine.
473 the user's name to the ident requester,
475 username made up of random alphanumeric characters,
480 flag overrides not only the user names,
481 but also any fallback name,
487 .Ar sec Ns Op . Ns Ar usec
489 Specify a timeout for the service.
490 The default timeout is 10.0 seconds.
494 service, as per RFC 1413.
495 All the remaining flags apply only in this case.
497 Return numeric user IDs instead of usernames.
501 exists in the home directory of the identified user, report the username
502 found in that file instead of the real username.
503 If the username found in
505 is that of an existing user,
506 then the real username is reported.
509 flag is also given then the username in
511 is checked against existing user IDs instead.
515 but without the restriction that the username in
517 must not match an existing user.
521 exists in the home directory of the identified user, return
522 .Dq ERROR\ : HIDDEN-USER .
525 file which might exist.
529 instead of the name of the system as reported by
535 utility also provides several other
537 services internally by use of
538 routines within itself. These services are
542 (character generator),
544 (human readable time), and
546 (machine readable time, in the form of the number of seconds since
547 midnight, January 1, 1900). All of these services are available in
548 both TCP and UDP versions; the UDP versions will refuse service if the
549 request specifies a reply port corresponding to any internal service.
550 (This is done as a defense against looping attacks; the remote IP address
552 For details of these services, consult the
557 The TCPMUX-demultiplexing service is also implemented as an internal service.
558 For any TCPMUX-based service to function, the following line must be included
561 .Bd -literal -offset indent
562 tcpmux stream tcp nowait root internal
569 will log an entry to syslog each time a connection is accepted, noting the
570 service selected and the IP-number of the remote requester if available.
571 Unless otherwise specified in the configuration file,
572 and in the absence of the
584 utility rereads its configuration file when it receives a hangup signal,
586 Services may be added, deleted or modified when the configuration file
588 Except when started in debugging mode,
590 records its process ID in the file
591 .Pa /var/run/inetd.pid
592 to assist in reconfiguration.
593 .Sh IMPLEMENTATION NOTES
599 will wrap all services specified as
608 option is given, such
610 services will be wrapped.
611 If both options are given, wrapping for both
612 internal and external services will be enabled.
613 Either wrapping option
614 will cause failed connections to be logged to the
619 flag to the wrapping options will include successful connections in the
626 only wraps requests for a
628 service while no servers are available to service requests.
630 connection to such a service has been allowed,
633 over subsequent connections to the service until no more servers
634 are left listening for connection requests.
636 When wrapping is enabled, the
638 daemon is not required, as that functionality is builtin.
639 For more information on TCP Wrappers, see the relevant documentation
640 .Pq Xr hosts_access 5 .
641 When reading that document, keep in mind that
643 services have no associated daemon name.
644 Therefore, the service name
647 should be used as the daemon name for
652 describes the TCPMUX protocol:
653 ``A TCP client connects to a foreign host on TCP port 1. It sends the
654 service name followed by a carriage-return line-feed <CRLF>. The
655 service name is never case sensitive. The server replies with a
656 single character indicating positive (+) or negative (\-)
657 acknowledgment, immediately followed by an optional message of
658 explanation, terminated with a <CRLF>. If the reply was positive,
659 the selected protocol begins; otherwise the connection is closed.''
660 The program is passed the TCP connection as file descriptors 0 and 1.
662 If the TCPMUX service name begins with a
665 returns the positive reply for the program.
666 This allows you to invoke programs that use stdin/stdout
667 without putting any special server code in them.
669 The special service name
673 to list TCPMUX services in
676 The implementation includes a tiny hack
677 to support IPsec policy settings for each socket.
678 A special form of comment line, starting with
680 is interpreted as a policy specifier.
683 will be used as an IPsec policy string,
685 .Xr ipsec_set_policy 3 .
687 policy specifier is applied to all the following lines in
689 until the next policy specifier.
690 An empty policy specifier resets the IPsec policy.
692 If an invalid IPsec policy specifier appears in
695 will provide an error message via the
697 interface and abort execution.
698 .Ss Ux Domain Sockets
699 In addition to running services on IP sockets,
704 To do this you specify a
718 The specification of the socket must be
719 an absolute path name,
720 optionally prefixed by an owner and mode
722 .Em :user:group:mode: .
725 .Dl ":news:daemon:220:/var/run/sock"
727 creates a socket owned
732 with permissions allowing only that user and group to connect.
733 The default owner is the user that
736 The default mode only allows the socket's owner to connect.
743 must change the ownership and permissions on the socket.
744 This can only be done securely if
745 the directory in which the socket is created
746 is writable only by root.
751 to create sockets in world writable directories,
756 or a similar directory.
758 Internal services may be run on
760 domain sockets, in the usual way.
762 the name of the internal service
764 the last component of the socket's pathname.
766 .Bl -tag -width /var/run/inetd.pid -compact
767 .It Pa /etc/inetd.conf
770 translation of service names to RPC program numbers
772 translation of service names to port numbers
773 .It Pa /var/run/inetd.pid
774 the pid of the currently running
778 Here are several example service entries for the various types of services:
780 ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
781 ntalk dgram udp wait root /usr/libexec/ntalkd ntalkd
782 telnet stream tcp6 nowait root /usr/libexec/telnetd telnetd
783 shell stream tcp46 nowait root /usr/libexec/rshd rshd
784 tcpmux/+date stream tcp nowait guest /bin/date date
785 tcpmux/phonebook stream tcp nowait guest /usr/local/bin/phonebook phonebook
786 rstatd/1-3 dgram rpc/udp wait root /usr/libexec/rpc.rstatd rpc.rstatd
787 /var/run/echo stream unix nowait root internal
789 chargen stream tcp nowait root internal
796 logs error messages using
798 Important error messages and their explanations are:
802 .Ar service Ns / Ns Ar protocol
803 .No "server failing (looping), service terminated."
805 The number of requests for the specified service in the past minute
807 The limit exists to prevent a broken program
808 or a malicious user from swamping the system.
809 This message may occur for several reasons:
810 .Bl -enum -offset indent
812 There are many hosts requesting the service within a short time period.
814 A broken client program is requesting the service too frequently.
816 A malicious user is running a program to invoke the service in
817 a denial-of-service attack.
819 The invoked service program has an error that causes clients
826 as described above, to change the rate limit.
827 Once the limit is reached, the service will be
828 reenabled automatically in 10 minutes.
831 .Ar service Ns / Ns Ar protocol :
837 .Ar service Ns / Ns Ar protocol :
850 (re)reads the configuration file.
851 The second message occurs when the
864 The user or group ID for the entry's
868 .It "setsockopt(SO_PRIVSTATE): Operation not supported"
871 utility attempted to renounce the privileged state associated with a
872 socket but was unable to.
875 .Xr ipsec_set_policy 3 ,
877 .Xr hosts_options 5 ,
891 .%A Michael C. St. Johns
892 .%T Identification Protocol
900 TCPMUX is based on code and documentation by Mark Lottor.
903 based services is modeled after that
907 The IPsec hack was contributed by the KAME project in 1999.
910 TCP Wrappers support first appeared in