167 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\" Copyright (c) 1983 Regents of the University of California.
 | |
| .\" All rights reserved.  The Berkeley software License Agreement
 | |
| .\" specifies the terms and conditions for redistribution.
 | |
| .\"
 | |
| .\"	@(#)rshd.8c	6.3 (Berkeley) 5/24/86
 | |
| .\"
 | |
| .TH RSHD 8 "May 24, 1986"
 | |
| .UC 5
 | |
| .SH NAME
 | |
| rshd \- remote shell server
 | |
| .SH SYNOPSIS
 | |
| .B "shell stream tcp nowait root /usr/sbin/in.rshd in.rshd"
 | |
| .br
 | |
| .B "tcpd shell /usr/sbin/in.rshd"
 | |
| .SH DESCRIPTION
 | |
| .B Rshd
 | |
| is the server for the 
 | |
| .BR rcmd (3)
 | |
| routine and, consequently, for the
 | |
| .BR rsh (1)
 | |
| program.  The server provides remote execution facilities
 | |
| with authentication based on privileged port numbers from trusted hosts.
 | |
| .PP
 | |
| .B Rshd
 | |
| listens for service requests at the port indicated in
 | |
| the ``cmd'' service specification; see
 | |
| .BR services (5).
 | |
| When a service request is received the following protocol
 | |
| is initiated:
 | |
| .IP 1)
 | |
| The server checks the client's source port.
 | |
| If the port is not in the range 0-1023, the server
 | |
| aborts the connection.
 | |
| .IP 2)
 | |
| The server reads characters from the socket up
 | |
| to a null (`\e0') byte.  The resultant string is
 | |
| interpreted as an ASCII number, base 10.
 | |
| .IP 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 
 | |
| .BR 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 0-1023.
 | |
| .IP 4)
 | |
| The server checks the client's source address
 | |
| and requests the corresponding host name (see
 | |
| .BR gethostbyaddr (3N),
 | |
| .BR hosts (5)
 | |
| and
 | |
| .BR named (8)).
 | |
| If the hostname cannot be determined,
 | |
| the dot-notation representation of the host address is used.
 | |
| .IP 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
 | |
| .BR client 's
 | |
| machine.
 | |
| .IP 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
 | |
| .BR server 's
 | |
| machine.
 | |
| .IP 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.  
 | |
| .IP 8)
 | |
| .B Rshd
 | |
| then validates the user according to the following steps.
 | |
| The local (server-end) user name is looked up in the password file
 | |
| and a
 | |
| .B chdir
 | |
| is performed to the user's home directory.  If either
 | |
| the lookup or 
 | |
| .B chdir
 | |
| fail, the connection is terminated.
 | |
| If the user is not the super-user, (user id 0), the file 
 | |
| .B /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 successful.  If the lookup
 | |
| fails, or the user is the super-user, then the file
 | |
| .B .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 terminated.
 | |
| .IP 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
 | |
| .IR rshd .
 | |
| .SH DIAGNOSTICS
 | |
| 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).
 | |
| .PP
 | |
| .B ``locuser too long''
 | |
| .br
 | |
| The name of the user on the client's machine is
 | |
| longer than 16 characters.
 | |
| .PP
 | |
| .B ``remuser too long''
 | |
| .br
 | |
| The name of the user on the remote machine is
 | |
| longer than 16 characters.
 | |
| .PP
 | |
| .B ``command too long ''
 | |
| .br
 | |
| The command line passed exceeds the size of the argument
 | |
| list (as configured into the system).
 | |
| .PP
 | |
| .B ``Login incorrect.''
 | |
| .br
 | |
| No password file entry for the user name existed.
 | |
| .PP
 | |
| .B ``No remote directory.''
 | |
| .br
 | |
| The 
 | |
| .B chdir
 | |
| command to the home directory failed.
 | |
| .PP
 | |
| .B ``Permission denied.''
 | |
| .br
 | |
| The authentication procedure described above failed.
 | |
| .PP
 | |
| .B ``Can't make pipe.''
 | |
| .br
 | |
| The pipe needed for the 
 | |
| .BR stderr ,
 | |
| wasn't created.
 | |
| .PP
 | |
| .B ``Try again.''
 | |
| .br
 | |
| A
 | |
| .B fork
 | |
| by the server failed.
 | |
| .PP
 | |
| .B ``<shellname>: ...''
 | |
| .br
 | |
| The user's login shell could not be started.  This message is returned
 | |
| on the connection associated with the
 | |
| .BR stderr ,
 | |
| and is not preceded by a flag byte.
 | |
| .SH SEE ALSO
 | |
| .BR rsh (1),
 | |
| .BR rcmd (3).
 | |
| .SH 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.
 | |
| .PP
 | |
| A facility to allow all data exchanges to be encrypted should be
 | |
| present.
 | |
| .PP
 | |
| A more extensible protocol should be used.
 | 
