# /etc/inetd.conf:  see inetd(8) for further informations.
#
# Internet server configuration database
#
#
# If you want to disable an entry so it isn't touched during
# package updates just comment it out with a single '#' character.
#
# If you make changes to this file, either reboot your machine or
# send the inetd process a HUP signal:
# Do a "ps x" as root and look up the pid of inetd. Then do a
#     kill -HUP <pid of inetd>
# inetd will re-read this file whenever it gets that signal.
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#
#:INTERNAL: Internal services
# It is generally considered safer to keep these off.
echo     stream  tcp	nowait	root	internal
echo     dgram   udp	wait	root	internal
#discard  stream  tcp	nowait	root	internal
#discard  dgram   udp	wait	root	internal
daytime  stream  tcp	nowait	root	internal
daytime  dgram   udp	wait	root	internal
#chargen  stream  tcp	nowait	root	internal
#chargen  dgram   udp	wait	root	internal
time     stream  tcp	nowait	root	internal
time     dgram   udp	wait	root	internal

# These are standard services.
#
#ftp	stream	tcp	nowait	root	/usr/sbin/tcpd	in.ftpd
#telnet	stream	tcp	nowait	root	/sbin/telnetd	/sbin/telnetd
#nntp	stream	tcp	nowait	root	tcpd	in.nntpd
#smtp	stream  tcp     nowait  root    tcpd    sendmail -v
#
# Shell, login, exec and talk are BSD protocols.
#
# If you run an ntalk daemon (such as netkit-ntalk) on the old talk
# port, that is, "talk" as opposed to "ntalk", it won't work and may
# cause certain broken talk clients to malfunction.
#
# The talkd from netkit-ntalk 0.12 and higher, however, can speak the
# old talk protocol and can be used safely.
#
#shell	stream	tcp	nowait	root	/usr/sbin/tcpd	in.rshd -L
#login	stream	tcp	nowait	root	/usr/sbin/tcpd	in.rlogind -L
#exec	stream	tcp	nowait	root	/usr/sbin/tcpd	in.rexecd
#talk	dgram	udp	wait	root	/usr/sbin/tcpd	in.talkd
#ntalk	dgram	udp	wait	root	/usr/sbin/tcpd	in.talkd
#
# Pop et al
# Leave these off unless you're using them.
#pop2	stream	tcp	nowait	root	/usr/sbin/tcpd	in.pop2d
#pop3	stream	tcp	nowait	root	/usr/sbin/tcpd	in.pop3d
#
# The Internet UUCP service.
# uucp	stream	tcp	nowait	uucp	/usr/sbin/tcpd	/usr/lib/uucp/uucico	-l
#
# Tftp service is provided primarily for booting.  Most sites
# run this only on machines acting as "boot servers." If you don't
# need it, don't use it.
#
#tftp	dgram	udp	wait	nobody	/usr/sbin/tcpd	in.tftpd
#bootps	dgram	udp	wait	root	/usr/sbin/in.bootpd	in.bootpd
#
# Finger, systat and netstat give out user information which may be
# valuable to potential "system crackers."  Many sites choose to disable
# some or all of these services to improve security.
#
#finger	stream	tcp	nowait	nobody	/usr/sbin/tcpd	in.fingerd -w
#systat	stream	tcp	nowait	nobody	/usr/sbin/tcpd	/bin/ps	-auwwx
#netstat	stream	tcp	nowait	root	/bin/netstat	/bin/netstat	-a
#ident	stream	tcp	nowait	root	/usr/sbin/in.identd	in.identd
