sh: Add simple CDPATH test.
[dragonfly.git] / usr.sbin / inetd / inetd.8
1 .\" Copyright (c) 1985, 1991, 1993, 1994
2 .\"     The Regents of the University of California.  All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
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. All advertising materials mentioning features or use of this software
13 .\"    must display the following acknowledgement:
14 .\"     This product includes software developed by the University of
15 .\"     California, Berkeley and its contributors.
16 .\" 4. Neither the name of the University nor the names of its contributors
17 .\"    may be used to endorse or promote products derived from this software
18 .\"    without specific prior written permission.
19 .\"
20 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 .\" SUCH DAMAGE.
31 .\"
32 .\"     from: @(#)inetd.8       8.3 (Berkeley) 4/13/94
33 .\" $FreeBSD: src/usr.sbin/inetd/inetd.8,v 1.46.2.13 2003/03/12 22:08:14 trhodes Exp $
34 .\"
35 .Dd February 7, 1996
36 .Dt INETD 8
37 .Os
38 .Sh NAME
39 .Nm inetd
40 .Nd internet
41 .Dq super-server
42 .Sh SYNOPSIS
43 .Nm
44 .Op Fl d
45 .Op Fl l
46 .Op Fl w
47 .Op Fl W
48 .Op Fl c Ar maximum
49 .Op Fl C Ar rate
50 .Op Fl a Ar address | hostname
51 .Op Fl p Ar filename
52 .Op Fl R Ar rate
53 .Op Fl s Ar maximum
54 .Op Ar configuration file
55 .Sh DESCRIPTION
56 The
57 .Nm
58 utility should be run at boot time by
59 .Pa /etc/rc
60 (see
61 .Xr rc 8 ) .
62 It then listens for connections on certain
63 internet sockets.  When a connection is found on one
64 of its sockets, it decides what service the socket
65 corresponds to, and invokes a program to service the request.
66 The server program is invoked with the service socket
67 as its standard input, output and error descriptors.
68 After the program is
69 finished,
70 .Nm
71 continues to listen on the socket (except in some cases which
72 will be described below).  Essentially,
73 .Nm
74 allows running one daemon to invoke several others,
75 reducing load on the system.
76 .Pp
77 The following options are available:
78 .Bl -tag -width indent
79 .It Fl d
80 Turn on debugging.
81 .It Fl l
82 Turn on logging of successful connections.
83 .It Fl w
84 Turn on TCP Wrapping for external services.
85 See the
86 .Sx "IMPLEMENTATION NOTES"
87 section for more information on TCP Wrappers support.
88 .It Fl W
89 Turn on TCP Wrapping for internal services which are built into
90 .Nm .
91 .It Fl c Ar maximum
92 Specify the default maximum number of
93 simultaneous invocations of each service;
94 the default is unlimited.
95 May be overridden on a per-service basis with the "max-child"
96 parameter.
97 .It Fl C Ar rate
98 Specify the default maximum number of times a service can be invoked
99 from a single IP address in one minute; the default is unlimited.
100 May be overridden on a per-service basis with the
101 "max-connections-per-ip-per-minute" parameter.
102 .It Fl R Ar rate
103 Specify the maximum number of times a service can be invoked
104 in one minute; the default is 256.
105 A rate of 0 allows an unlimited number of invocations.
106 .It Fl s Ar maximum
107 Specify the default maximum number of
108 simultaneous invocations of each service from a single IP address;
109 the default is unlimited.
110 May be overridden on a per-service basis with the "max-child-per-ip"
111 parameter.
112 .It Fl a
113 Specify one specific IP address to bind to.
114 Alternatively, a hostname can be specified,
115 in which case the IPv4 or IPv6 address
116 which corresponds to that hostname is used.
117 Usually a hostname is specified when
118 .Nm
119 is run inside a
120 .Xr jail 8 ,
121 in which case the hostname corresponds to the
122 .Xr jail 8
123 environment.
124 .Pp
125 When hostname specification is used
126 and both IPv4 and IPv6 bindings are desired,
127 one entry with the appropriate
128 .Em protocol
129 type for each binding
130 is required for each service in
131 .Pa /etc/inetd.conf .
132 For example,
133 a TCP-based service would need two entries,
134 one using
135 .Dq tcp4
136 for the
137 .Em protocol
138 and the other using
139 .Dq tcp6 .
140 See the explanation of the
141 .Pa /etc/inetd.conf
142 .Em protocol
143 field below.
144 .It Fl p
145 Specify an alternate file in which to store the process ID.
146 .El
147 .Pp
148 Upon execution,
149 .Nm
150 reads its configuration information from a configuration
151 file which, by default, is
152 .Pa /etc/inetd.conf .
153 There must be an entry for each field of the configuration
154 file, with entries for each field separated by a tab or
155 a space.  Comments are denoted by a
156 .Dq #
157 at the beginning
158 of a line.  There must be an entry for each field.  The
159 fields of the configuration file are as follows:
160 .Pp
161 .Bd -unfilled -offset indent -compact
162 service name
163 socket type
164 protocol
165 {wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]
166 user[:group][/login-class]
167 server program
168 server program arguments
169 .Ed
170 .Pp
171 To specify an
172 .Tn "ONC RPC" Ns -based
173 service, the entry would contain these fields:
174 .Pp
175 .Bd -unfilled -offset indent -compact
176 service name/version
177 socket type
178 rpc/protocol
179 user[:group][/login-class]
180 server program
181 server program arguments
182 .Ed
183 .Pp
184 There are two types of services that
185 .Nm
186 can start: standard and TCPMUX.
187 A standard service has a well-known port assigned to it;
188 it may be a service that implements an official Internet standard or is a
189 .Bx Ns -specific
190 service.
191 As described in
192 .Tn RFC 1078 ,
193 TCPMUX services are nonstandard services that do not have a
194 well-known port assigned to them.
195 They are invoked from
196 .Nm
197 when a program connects to the
198 .Dq tcpmux
199 well-known port and specifies
200 the service name.
201 This feature is useful for adding locally-developed servers.
202 TCPMUX requests are only accepted when the multiplexor service itself
203 is enabled, above and beyond and specific TCPMUX-based servers; see the
204 discussion of internal services below.
205 .Pp
206 The
207 .Em service-name
208 entry is the name of a valid service in
209 the file
210 .Pa /etc/services ,
211 or the specification of a
212 .Ux
213 domain socket (see below).
214 For
215 .Dq internal
216 services (discussed below), the service
217 name
218 should
219 be the official name of the service (that is, the first entry in
220 .Pa /etc/services ) .
221 When used to specify an
222 .Tn "ONC RPC" Ns -based
223 service, this field is a valid RPC service name in
224 the file
225 .Pa /etc/rpc .
226 The part on the right of the
227 .Dq /
228 is the RPC version number.
229 This
230 can simply be a single numeric argument or a range of versions.
231 A range is bounded by the low version to the high version -
232 .Dq rusers/1-3 .
233 For TCPMUX services, the value of the
234 .Em service-name
235 field consists of the string
236 .Dq tcpmux
237 followed by a slash and the
238 locally-chosen service name.
239 The service names listed in
240 .Pa /etc/services
241 and the name
242 .Dq help
243 are reserved.
244 Try to choose unique names for your TCPMUX services by prefixing them with
245 your organization's name and suffixing them with a version number.
246 .Pp
247 The
248 .Em socket-type
249 should be one of
250 .Dq stream ,
251 .Dq dgram ,
252 .Dq raw ,
253 .Dq rdm ,
254 or
255 .Dq seqpacket ,
256 depending on whether the socket is a stream, datagram, raw,
257 reliably delivered message, or sequenced packet socket.
258 TCPMUX services must use
259 .Dq stream .
260 .Pp
261 The
262 .Em protocol
263 must be a valid protocol or
264 .Dq unix .
265 Examples are
266 .Dq tcp
267 or
268 .Dq udp ,
269 both of which imply IPv4 for backward compatibility.
270 The names
271 .Dq tcp4
272 and
273 .Dq udp4
274 specify IPv4 only.
275 The names
276 .Dq tcp6
277 and
278 .Dq udp6
279 specify IPv6 only.
280 The names
281 .Dq tcp46
282 and
283 .Dq udp46
284 specify that the entry accepts both IPv4 and IPv6 connections
285 via a wildcard
286 .Dv AF_INET6
287 socket.
288 If it is desired that the service is reachable via T/TCP, one should
289 specify
290 .Dq tcp/ttcp ,
291 which implies IPv4 for backward compatibility.
292 The name
293 .Dq tcp4/ttcp
294 specifies IPv4 only, while
295 .Dq tcp6/ttcp
296 specifies IPv6 only.
297 The name
298 .Dq tcp46/ttcp
299 specify that the entry accepts both IPv6 and IPv6 connections
300 via a wildcard
301 .Dv AF_INET6
302 socket.
303 Rpc based services
304 (for which only IPv4 is supported at this time)
305 are specified with the
306 .Dq rpc/tcp
307 or
308 .Dq rpc/udp
309 service type.
310 TCPMUX services must use
311 .Dq tcp ,
312 .Dq tcp4 ,
313 .Dq tcp6
314 or
315 .Dq tcp46 .
316 .Pp
317 The
318 .Em wait/nowait
319 entry specifies whether the server that is invoked by
320 .Nm
321 will take over
322 the socket associated with the service access point, and thus whether
323 .Nm
324 should wait for the server to exit before listening for new service
325 requests.
326 Datagram servers must use
327 .Dq wait ,
328 as they are always invoked with the original datagram socket bound
329 to the specified service address.
330 These servers must read at least one datagram from the socket
331 before exiting.
332 If a datagram server connects
333 to its peer, freeing the socket so
334 .Nm
335 can receive further messages on the socket, it is said to be
336 a
337 .Dq multi-threaded
338 server;
339 it should read one datagram from the socket and create a new socket
340 connected to the peer.
341 It should fork, and the parent should then exit
342 to allow
343 .Nm
344 to check for new service requests to spawn new servers.
345 Datagram servers which process all incoming datagrams
346 on a socket and eventually time out are said to be
347 .Dq single-threaded .
348 .Xr Comsat 8 ,
349 .Pq Xr biff 1
350 and
351 .Xr talkd 8
352 are both examples of the latter type of
353 datagram server.
354 .Xr Tftpd 8
355 is an example of a multi-threaded datagram server.
356 .Pp
357 Servers using stream sockets generally are multi-threaded and
358 use the
359 .Dq nowait
360 entry.
361 Connection requests for these services are accepted by
362 .Nm ,
363 and the server is given only the newly-accepted socket connected
364 to a client of the service.
365 Most stream-based services operate in this manner.
366 Stream-based servers that use
367 .Dq wait
368 are started with the listening service socket, and must accept
369 at least one connection request before exiting.
370 Such a server would normally accept and process incoming connection
371 requests until a timeout.
372 TCPMUX services must use
373 .Dq nowait .
374 .Pp
375 The maximum number of outstanding child processes (or
376 .Dq threads )
377 for a
378 .Dq nowait
379 service may be explicitly specified by appending a
380 .Dq /
381 followed by the number to the
382 .Dq nowait
383 keyword.
384 Normally
385 (or if a value of zero is specified) there is no maximum.
386 Otherwise,
387 once the maximum is reached, further connection attempts will be
388 queued up until an existing child process exits.
389 This also works
390 in the case of
391 .Dq wait
392 mode, although a value other than one (the
393 default) might not make sense in some cases.
394 You can also specify the maximum number of connections per minute
395 for a given IP address by appending
396 a
397 .Dq /
398 followed by the number to the maximum number of
399 outstanding child processes.
400 Once the maximum is reached, further
401 connections from this IP address will be dropped until the end of the
402 minute.
403 In addition, you can specify the maximum number of simultaneous
404 invocations of each service from a single IP address by appending a
405 .Dq /
406 followed by the number to the maximum number of outstanding child
407 processes.  Once the maximum is reached, further connections from this
408 IP address will be dropped.
409 .Pp
410 The
411 .Em user
412 entry should contain the user name of the user as whom the server
413 should run.  This allows for servers to be given less permission
414 than root.
415 Optional
416 .Em group
417 part separated by
418 .Dq \&:
419 allows to specify group name different
420 than default group for this user.
421 Optional
422 .Em login-class
423 part separated by
424 .Dq /
425 allows to specify login class different
426 than default
427 .Dq daemon
428 login class.
429 .Pp
430 The
431 .Em server-program
432 entry should contain the pathname of the program which is to be
433 executed by
434 .Nm
435 when a request is found on its socket.  If
436 .Nm
437 provides this service internally, this entry should
438 be
439 .Dq internal .
440 .Pp
441 The
442 .Em server program arguments
443 should be just as arguments
444 normally are, starting with argv[0], which is the name of
445 the program.  If the service is provided internally, the
446 .Em service-name
447 of the service (and any arguments to it) or the word
448 .Dq internal
449 should take the place of this entry.
450 .Pp
451 Currently, the only internal service to take arguments is
452 .Dq auth .
453 Without options, the service will always return
454 .Dq ERROR\ : HIDDEN-USER .
455 The available arguments to this service that alter its behavior are:
456 .Bl -tag -width indent
457 .It Fl d Ar fallback
458 Provide a
459 .Ar fallback
460 username.
461 If the real
462 .Dq auth
463 service is enabled
464 (with the
465 .Fl r
466 option discussed below),
467 return this username instead of an error
468 when lookups fail
469 for either socket credentials or the username.
470 If the real
471 .Dq auth
472 service is disabled,
473 return this username for every request.
474 This is primarily useful when running this service on a NAT machine.
475 .It Fl g
476 Instead of returning
477 the user's name to the ident requester,
478 report a
479 username made up of random alphanumeric characters,
480 e.g.\&
481 .Dq c0c993 .
482 The
483 .Fl g
484 flag overrides not only the user names,
485 but also any fallback name,
486 .Pa .fakeid
487 or
488 .Pa .noident
489 files.
490 .It Fl t Xo
491 .Ar sec Ns Op . Ns Ar usec
492 .Xc
493 Specify a timeout for the service.
494 The default timeout is 10.0 seconds.
495 .It Fl r
496 Offer a real
497 .Dq auth
498 service, as per RFC 1413.
499 All the remaining flags apply only in this case.
500 .It Fl i
501 Return numeric user IDs instead of usernames.
502 .It Fl f
503 If the file
504 .Pa .fakeid
505 exists in the home directory of the identified user, report the username
506 found in that file instead of the real username.
507 If the username found in
508 .Pa .fakeid
509 is that of an existing user,
510 then the real username is reported.
511 If the
512 .Fl i
513 flag is also given then the username in
514 .Pa .fakeid
515 is checked against existing user IDs instead.
516 .It Fl F
517 same as
518 .Fl f
519 but without the restriction that the username in
520 .Pa .fakeid
521 must not match an existing user.
522 .It Fl n
523 If the file
524 .Pa .noident
525 exists in the home directory of the identified user, return
526 .Dq ERROR\ : HIDDEN-USER .
527 This overrides any
528 .Pa fakeid
529 file which might exist.
530 .It Fl o Ar osname
531 Use
532 .Ar osname
533 instead of the name of the system as reported by
534 .Xr uname 3 .
535 .El
536 .Pp
537 The
538 .Nm
539 utility also provides several other
540 .Dq trivial
541 services internally by use of
542 routines within itself.  These services are
543 .Dq echo ,
544 .Dq discard ,
545 .Dq chargen
546 (character generator),
547 .Dq daytime
548 (human readable time), and
549 .Dq time
550 (machine readable time, in the form of the number of seconds since
551 midnight, January 1, 1900).  All of these services are available in
552 both TCP and UDP versions; the UDP versions will refuse service if the
553 request specifies a reply port corresponding to any internal service.
554 (This is done as a defense against looping attacks; the remote IP address
555 is logged.)
556 For details of these services, consult the
557 appropriate
558 .Tn RFC
559 document.
560 .Pp
561 The TCPMUX-demultiplexing service is also implemented as an internal service.
562 For any TCPMUX-based service to function, the following line must be included
563 in
564 .Pa inetd.conf :
565 .Bd -literal -offset indent
566 tcpmux  stream  tcp     nowait  root    internal
567 .Ed
568 .Pp
569 When given the
570 .Fl l
571 option
572 .Nm
573 will log an entry to syslog each time a connection is accepted, noting the
574 service selected and the IP-number of the remote requester if available.
575 Unless otherwise specified in the configuration file,
576 and in the absence of the
577 .Fl W
578 and
579 .Fl w
580 options,
581 .Nm
582 will log to the
583 .Dq daemon
584 facility.
585 .Pp
586 The
587 .Nm
588 utility rereads its configuration file when it receives a hangup signal,
589 .Dv SIGHUP .
590 Services may be added, deleted or modified when the configuration file
591 is reread.
592 Except when started in debugging mode,
593 .Nm
594 records its process ID in the file
595 .Pa /var/run/inetd.pid
596 to assist in reconfiguration.
597 .Sh IMPLEMENTATION NOTES
598 .Ss TCP Wrappers
599 When given the
600 .Fl w
601 option,
602 .Nm
603 will wrap all services specified as
604 .Dq stream nowait
605 or
606 .Dq dgram
607 except for
608 .Dq internal
609 services.
610 If the
611 .Fl W
612 option is given, such
613 .Dq internal
614 services will be wrapped.
615 If both options are given, wrapping for both
616 internal and external services will be enabled.
617 Either wrapping option
618 will cause failed connections to be logged to the
619 .Dq auth
620 syslog facility.
621 Adding the
622 .Fl l
623 flag to the wrapping options will include successful connections in the
624 logging to the
625 .Dq auth
626 facility.
627 .Pp
628 Note that
629 .Nm
630 only wraps requests for a
631 .Dq wait
632 service while no servers are available to service requests.
633 Once a
634 connection to such a service has been allowed,
635 .Nm
636 has no control
637 over subsequent connections to the service until no more servers
638 are left listening for connection requests.
639 .Pp
640 When wrapping is enabled, the
641 .Pa tcpd
642 daemon is not required, as that functionality is builtin.
643 For more information on TCP Wrappers, see the relevant documentation
644 .Pq Xr hosts_access 5 .
645 When reading that document, keep in mind that
646 .Dq internal
647 services have no associated daemon name.
648 Therefore, the service name
649 as specified in
650 .Pa inetd.conf
651 should be used as the daemon name for
652 .Dq internal
653 services.
654 .Ss TCPMUX
655 .Tn RFC 1078
656 describes the TCPMUX protocol:
657 ``A TCP client connects to a foreign host on TCP port 1.  It sends the
658 service name followed by a carriage-return line-feed <CRLF>.  The
659 service name is never case sensitive.  The server replies with a
660 single character indicating positive (+) or negative (\-)
661 acknowledgment, immediately followed by an optional message of
662 explanation, terminated with a <CRLF>.  If the reply was positive,
663 the selected protocol begins; otherwise the connection is closed.''
664 The program is passed the TCP connection as file descriptors 0 and 1.
665 .Pp
666 If the TCPMUX service name begins with a
667 .Dq + ,
668 .Nm
669 returns the positive reply for the program.
670 This allows you to invoke programs that use stdin/stdout
671 without putting any special server code in them.
672 .Pp
673 The special service name
674 .Dq help
675 causes
676 .Nm
677 to list TCPMUX services in
678 .Pa inetd.conf .
679 .Ss IPsec
680 The implementation includes a tiny hack
681 to support IPsec policy settings for each socket.
682 A special form of comment line, starting with
683 .Dq Li #@ ,
684 is interpreted as a policy specifier.
685 Everything after the
686 .Dq Li #@
687 will be used as an IPsec policy string,
688 as described in
689 .Xr ipsec_set_policy 3 .
690 Each
691 policy specifier is applied to all the following lines in
692 .Pa inetd.conf
693 until the next policy specifier.
694 An empty policy specifier resets the IPsec policy.
695 .Pp
696 If an invalid IPsec policy specifier appears in
697 .Pa inetd.conf ,
698 .Nm
699 will provide an error message via the
700 .Xr syslog 3
701 interface and abort execution.
702 .Ss Ux Domain Sockets
703 In addition to running services on IP sockets,
704 .Nm
705 can also manage
706 .Ux
707 domain sockets.
708 To do this you specify a
709 .Em protocol
710 of
711 .Dq unix
712 and specify the
713 .Ux
714 domain socket as the
715 .Em service-name .
716 The
717 .Em service-type
718 may be
719 .Dq stream
720 or
721 .Dq dgram .
722 The specification of the socket must be
723 an absolute path name,
724 optionally prefixed by an owner and mode
725 of the form
726 .Em :user:group:mode: .
727 The specification:
728 .Pp
729 .Dl ":news:daemon:220:/var/run/sock"
730 .Pp
731 creates a socket owned
732 by user
733 .Dq news
734 in group
735 .Dq daemon
736 with permissions allowing only that user and group to connect.
737 The default owner is the user that
738 .Nm
739 is running as.
740 The default mode only allows the socket's owner to connect.
741 .Pp
742 .Sy WARNING :
743 while creating
744 .Ux
745 domain socket,
746 .Nm
747 must change the ownership and permissions on the socket.
748 This can only be done securely if
749 the directory in which the socket is created
750 is writable only by root.
751 Do
752 .Em NOT
753 use
754 .Nm
755 to create sockets in world writable directories,
756 such as
757 .Pa /tmp ,
758 instead use
759 .Pa /var/run
760 or a similar directory.
761 .Pp
762 Internal services may be run on
763 .Ux
764 domain sockets, in the usual way.
765 In this case
766 the name of the internal service
767 is determined using
768 the last component of the socket's pathname.
769 .Sh "FILES"
770 .Bl -tag -width /var/run/inetd.pid -compact
771 .It Pa /etc/inetd.conf
772 configuration file
773 .It Pa /etc/rpc
774 translation of service names to RPC program numbers
775 .It Pa /etc/services
776 translation of service names to port numbers
777 .It Pa /var/run/inetd.pid
778 the pid of the currently running
779 .Nm
780 .El
781 .Sh "EXAMPLES"
782 Here are several example service entries for the various types of services:
783 .Bd -literal
784 ftp          stream  tcp   nowait root  /usr/libexec/ftpd        ftpd -l
785 ntalk        dgram   udp   wait   root  /usr/libexec/ntalkd      ntalkd
786 telnet       stream  tcp6  nowait root  /usr/libexec/telnetd  telnetd
787 shell        stream  tcp46  nowait root  /usr/libexec/rshd rshd
788 tcpmux/+date stream  tcp   nowait guest /bin/date                date
789 tcpmux/phonebook stream tcp nowait guest /usr/local/bin/phonebook phonebook
790 rstatd/1-3   dgram   rpc/udp wait root  /usr/libexec/rpc.rstatd  rpc.rstatd
791 /var/run/echo stream unix  nowait root  internal
792 #@ ipsec ah/require
793 chargen      stream  tcp   nowait root  internal
794 #@
795 .Ed
796 .Sh "ERROR MESSAGES"
797 The
798 .Nm
799 server
800 logs error messages using
801 .Xr syslog 3 .
802 Important error messages and their explanations are:
803 .Pp
804 .Bl -ohang -compact
805 .It Xo
806 .Ar service Ns / Ns Ar protocol
807 .No "server failing (looping), service terminated."
808 .Xc
809 The number of requests for the specified service in the past minute
810 exceeded the limit.
811 The limit exists to prevent a broken program
812 or a malicious user from swamping the system.
813 This message may occur for several reasons:
814 .Bl -enum -offset indent
815 .It
816 There are many hosts requesting the service within a short time period.
817 .It
818 A broken client program is requesting the service too frequently.
819 .It
820 A malicious user is running a program to invoke the service in
821 a denial-of-service attack.
822 .It
823 The invoked service program has an error that causes clients
824 to retry quickly.
825 .El
826 .Pp
827 Use the
828 .Fl R Ar rate
829 option,
830 as described above, to change the rate limit.
831 Once the limit is reached, the service will be
832 reenabled automatically in 10 minutes.
833 .Pp
834 .It Xo
835 .Ar service Ns / Ns Ar protocol :
836 .No \&No such user
837 .Ar user ,
838 .No service ignored
839 .Xc
840 .It Xo
841 .Ar service Ns / Ns Ar protocol :
842 .No getpwnam :
843 .Ar user :
844 .No \&No such user
845 .Xc
846 No entry for
847 .Ar user
848 exists in the
849 .Xr passwd 5
850 database.
851 The first message
852 occurs when
853 .Nm
854 (re)reads the configuration file.
855 The second message occurs when the
856 service is invoked.
857 .Pp
858 .It Xo
859 .Ar service :
860 .No can't set uid
861 .Ar uid
862 .Xc
863 .It Xo
864 .Ar service :
865 .No can't set gid
866 .Ar gid
867 .Xc
868 The user or group ID for the entry's
869 .Ar user
870 field is invalid.
871 .Pp
872 .It "setsockopt(SO_PRIVSTATE): Operation not supported"
873 The
874 .Nm
875 utility attempted to renounce the privileged state associated with a
876 socket but was unable to.
877 .El
878 .Sh SEE ALSO
879 .Xr ipsec_set_policy 3 ,
880 .Xr hosts_access 5 ,
881 .Xr hosts_options 5 ,
882 .Xr login.conf 5 ,
883 .Xr passwd 5 ,
884 .Xr rpc 5 ,
885 .Xr services 5 ,
886 .Xr comsat 8 ,
887 .Xr fingerd 8 ,
888 .Xr ftpd 8 ,
889 .Xr rlogind 8 ,
890 .Xr rpcbind 8 ,
891 .Xr rshd 8 ,
892 .Xr telnetd 8 ,
893 .Xr tftpd 8
894 .Rs
895 .%A Michael C. St. Johns
896 .%T Identification Protocol
897 .%O RFC 1413
898 .Re
899 .Sh HISTORY
900 The
901 .Nm
902 utility appeared in
903 .Bx 4.3 .
904 TCPMUX is based on code and documentation by Mark Lottor.
905 Support for
906 .Tn "ONC RPC"
907 based services is modeled after that
908 provided by
909 .Tn SunOS
910 4.1.
911 The IPsec hack was contributed by the KAME project in 1999.
912 The
913 .Fx
914 TCP Wrappers support first appeared in
915 .Fx 3.2 .