unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-4.1.3)
Page:
Section:
Apropos / Subsearch:
optional field

RSHD(8C)                                                              RSHD(8C)



NAME
       rshd, in.rshd - remote shell server

SYNOPSIS
       /usr/etc/in.rshd host.port

DESCRIPTION
       rshd  is the server for the rcmd(3N) routine and, consequently, for the
       rsh(1C) program.  The server provides remote execution facilities  with
       authentication based on privileged port numbers.

       rshd  is  invoked  by inetd(8C) each time a shell service is requested,
       and executes the following protocol:

       o      The server checks the client's source port.  If the port is  not
              in  the  range  512-1023, the server aborts the connection.  The
              clients host address (in hex) and port number (in  decimal)  are
              the argument passed to rshd.

       o      The  server  reads  characters from the socket up to a null (\0)
              byte.  The resultant string is interpreted as an  ASCII  number,
              base 10.

       o      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
              stderr.   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 512-1023.

       o      The  server  checks the client's source address.  If the address
              is associated with a  host  for  which  no  corresponding  entry
              exists  in  the  host  name data base (see hosts(5)), the server
              aborts the connection.

       o      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 server's machine.

       o      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 client's machine.

       o      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.

       o      rshd then validates the user according to the  following  steps.
              The  remote  user  name  is looked up in the password file and a
              chdir is performed to the user's home directory.  If the  lookup
              or  fails, the connection is terminated.  If the chdir fails, it
              does a chdir to / (root).  If the user is  not  the  super-user,
              (user  ID  0), the file /etc/hosts.equiv is consulted for a list
              of hosts considered "equivalent".  If the client's host name  is
              present  in this file, the authentication is considered success-
              ful.  If the lookup fails, or the user is the  super-user,  then
              the  file  .rhosts  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 ter-
              minated.

       o      A null byte is returned on the connection  associated  with  the
              stderr  and the command line is passed to the normal login shell
              of the user.  The shell inherits the network connections  estab-
              lished by rshd.

FILES
       /etc/hosts.equiv

SEE ALSO
       rsh(1C), rcmd(3N), syslogd(8)

BUGS
       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.

DIAGNOSTICS
       The following diagnostic messages are returned on the connection  asso-
       ciated with the stderr, 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 command execution).

       locuser too long
              The name of the user on the client's machine is longer  than  16
              characters.

       remuser too long
              The  name  of  the  user on the remote machine is longer than 16
              characters.

       command too long
              The command line passed exceeds the size of  the  argument  list
              (as configured into the system).

       Hostname for your address unknown.
              No  entry  in  the  host  name database existed for the client's
              machine.

       Login incorrect.
              No password file entry for the user name existed.

       Permission denied.
              The authentication procedure described above failed.

       Can't make pipe.
              The pipe needed for the stderr, was not created.

       Try again.
              A fork by the server failed.

       /usr/bin/sh: ...
              The user's login shell could not be started.

       In addition, daemon's status  messages  and  internal  diagnostics  are
       logged to the appropriate system log using the syslogd(8) facility.



                               9 September 1987                       RSHD(8C)