175 lines
6.4 KiB
HTML
175 lines
6.4 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
<TITLE>rshd(8)</TITLE>
|
|
</HEAD>
|
|
<BODY>
|
|
<H1>rshd(8)</H1>
|
|
<HR>
|
|
<PRE>
|
|
|
|
</PRE>
|
|
<H2>NAME</H2><PRE>
|
|
rshd - remote shell server
|
|
|
|
|
|
</PRE>
|
|
<H2>SYNOPSIS</H2><PRE>
|
|
<STRONG>shell</STRONG> <STRONG>stream</STRONG> <STRONG>tcp</STRONG> <STRONG>nowait</STRONG> <STRONG>root</STRONG> <STRONG>/usr/sbin/in.rshd</STRONG> <STRONG>in.rshd</STRONG>
|
|
<STRONG>tcpd</STRONG> <STRONG>shell</STRONG> <STRONG>/usr/sbin/in.rshd</STRONG>
|
|
|
|
|
|
</PRE>
|
|
<H2>DESCRIPTION</H2><PRE>
|
|
<STRONG>Rshd</STRONG> is the server for the <STRONG><A HREF="../man3/rcmd.3.html">rcmd(3)</A></STRONG> routine and, consequently, for the
|
|
<STRONG><A HREF="../man1/rsh.1.html">rsh(1)</A></STRONG> program. The server provides remote execution facilities with
|
|
authentication based on privileged port numbers from trusted hosts.
|
|
|
|
<STRONG>Rshd</STRONG> listens for service requests at the port indicated in the ``cmd''
|
|
service specification; see <STRONG><A HREF="../man5/services.5.html">services(5)</A></STRONG>. When a service request is
|
|
received the following protocol is initiated:
|
|
|
|
1) The server checks the client's source port. If the port is not in
|
|
the range 0-1023, the server aborts the connection.
|
|
|
|
2) The server reads characters from the socket up to a null (`\0')
|
|
byte. The resultant string is interpreted as an ASCII number, base
|
|
10.
|
|
|
|
3) If the number received in step 1 is non-zero, it is interpreted as
|
|
the port number of a secondary stream to be used for the <STRONG>stderr</STRONG>. A
|
|
second connection is then created to the specified port on the
|
|
client's machine. The source port of this second connection is also
|
|
in the range 0-1023.
|
|
|
|
4) The server checks the client's source address and requests the
|
|
corresponding host name (see <STRONG><A HREF="../man3/gethostbyaddr.3N.html">gethostbyaddr(3N)</A></STRONG>, <STRONG><A HREF="../man5/hosts.5.html">hosts(5)</A></STRONG> and
|
|
<STRONG><A HREF="../man8/named.8.html">named(8)</A></STRONG>). If the hostname cannot be determined, the dot-notation
|
|
representation of the host address is used.
|
|
|
|
5) A null terminated user name of at most 16 characters is retrieved on
|
|
the initial socket. This user name is interpreted as the user
|
|
identity on the <STRONG>client</STRONG>'s machine.
|
|
|
|
6) A null terminated user name of at most 16 characters is retrieved on
|
|
the initial socket. This user name is interpreted as a user
|
|
identity to use on the <STRONG>server</STRONG>'s machine.
|
|
|
|
7) A null terminated command to be passed to a shell is retrieved on
|
|
the initial socket. The length of the command is limited by the
|
|
upper bound on the size of the system's argument list.
|
|
|
|
8) <STRONG>Rshd</STRONG> then validates the user according to the following steps. The
|
|
local (server-end) user name is looked up in the password file and a
|
|
<STRONG>chdir</STRONG> is performed to the user's home directory. If either the
|
|
lookup or <STRONG>chdir</STRONG> fail, the connection is terminated. If the user is
|
|
not the super-user, (user id 0), the file <STRONG>/etc/hosts.equiv</STRONG> is
|
|
consulted for a list of hosts considered ``equivalent''. If the
|
|
client's host name is present in this file, the authentication is
|
|
considered successful. If the lookup fails, or the user is the
|
|
super-user, then the file <STRONG>.rhosts</STRONG> in the home directory of the
|
|
remote user is checked for the machine name and identity of the user
|
|
on the client's machine. If this lookup fails, the connection is
|
|
terminated.
|
|
|
|
9) A null byte is returned on the initial socket and the command line
|
|
is passed to the normal login shell of the user. The shell inherits
|
|
the network connections established by <EM>rshd</EM>.
|
|
|
|
|
|
</PRE>
|
|
<H2>DIAGNOSTICS</H2><PRE>
|
|
Except for the last one listed below, all diagnostic messages are
|
|
returned on the initial socket, after which any network connections are
|
|
closed. An error is indicated by a leading byte with a value of 1 (0 is
|
|
returned in step 9 above upon successful completion of all the steps
|
|
prior to the execution of the login shell).
|
|
|
|
<STRONG>``locuser</STRONG> <STRONG>too</STRONG> <STRONG>long''</STRONG>
|
|
The name of the user on the client's machine is longer than 16
|
|
characters.
|
|
|
|
<STRONG>``remuser</STRONG> <STRONG>too</STRONG> <STRONG>long''</STRONG>
|
|
The name of the user on the remote machine is longer than 16 characters.
|
|
|
|
<STRONG>``command</STRONG> <STRONG>too</STRONG> <STRONG>long</STRONG> <STRONG>''</STRONG>
|
|
The command line passed exceeds the size of the argument list (as
|
|
configured into the system).
|
|
|
|
<STRONG>``Login</STRONG> <STRONG>incorrect.''</STRONG>
|
|
No password file entry for the user name existed.
|
|
|
|
<STRONG>``No</STRONG> <STRONG>remote</STRONG> <STRONG>directory.''</STRONG>
|
|
The <STRONG>chdir</STRONG> command to the home directory failed.
|
|
|
|
<STRONG>``Permission</STRONG> <STRONG>denied.''</STRONG>
|
|
The authentication procedure described above failed.
|
|
|
|
<STRONG>``Can't</STRONG> <STRONG>make</STRONG> <STRONG>pipe.''</STRONG>
|
|
The pipe needed for the <STRONG>stderr</STRONG>, wasn't created.
|
|
|
|
<STRONG>``Try</STRONG> <STRONG>again.''</STRONG>
|
|
A <STRONG>fork</STRONG> by the server failed.
|
|
|
|
<STRONG>``<shellname>:</STRONG> <STRONG>...''</STRONG>
|
|
The user's login shell could not be started. This message is returned on
|
|
the connection associated with the <STRONG>stderr</STRONG>, and is not preceded by a flag
|
|
byte.
|
|
|
|
|
|
</PRE>
|
|
<H2>SEE ALSO</H2><PRE>
|
|
<STRONG><A HREF="../man1/rsh.1.html">rsh(1)</A></STRONG>, <STRONG><A HREF="../man3/rcmd.3.html">rcmd(3)</A></STRONG>.
|
|
|
|
|
|
</PRE>
|
|
<H2>BUGS</H2><PRE>
|
|
The authentication procedure used here assumes the integrity of each
|
|
client machine and the connecting medium. This is insecure, but is
|
|
useful in an ``open'' environment.
|
|
|
|
A facility to allow all data exchanges to be encrypted should be present.
|
|
|
|
A more extensible protocol should be used.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</PRE>
|
|
</BODY>
|
|
</HTML>
|