# /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
