The telnetd daemon
is a server which supports the telnet program. Makes sense huh? Telnet is a
terminal program that allows you to work interactively with
remote machines, just as if you would with the local machine. When inetd
receives a incoming telnet request, it invokes telnetd.
What you then see is no different that if you had logged in locally to that
machine (probably). You are presented with a login: prompt, you enter you
logname and password. If these are correct, you then are
given a shell that you can enter commands starts
The way telnetd works is that it allocates a pseudo-terminal
device for you.
has the same behavior as a "normal" terminal
in that you
input commands and see the results on your screen. Internal the pseudo-terminal
is broken down into two parts. The master portion is the side that you see.
Since your side is the one that is controlling things, your side is the master.
The master side accepts input from your telnet program and passes them to
telnetd on the remote side. As you might guess, the side that has to listen to
the master is the slave. The slave side of the pseudo-terminal
serves as stdin,
stdout, and stderr
for the remote application.
Similar in functionality to telnet is rlogin. The server for rlogin, is
rlogind, and like telnetd, is started by inetd. One of the primary differences
is that, if configured, rlogind can provided a connection without the normal
The functionality of rlogind is very similar to that of telnetd.
Pseudo-terminals are allocated and the slave portion becomes the
stdin, stdout, and
stderr. During login,
rlogind uses an authentication procedure called "host equivalence", which sets
up remote machines as being "trusted". If rlogind on the destination machine
authenticates the source machine, the user is automatically logged in. If the
authentication fails, the user must go through the normal login procedure. How
to set up host equivalence, we'll get to later.