|
|
1.1 ! root 1: .TH RSHD 8C "4 March 1983" ! 2: .UC 4 ! 3: .SH NAME ! 4: rshd \- remote shell server ! 5: .SH SYNOPSIS ! 6: .B /etc/rshd ! 7: .SH DESCRIPTION ! 8: .I Rshd ! 9: is the server for the ! 10: .IR rcmd (3X) ! 11: routine and, consequently, for the ! 12: .IR rsh (1C) ! 13: program. The server provides remote execution facilities ! 14: with authentication based on privileged port numbers. ! 15: .PP ! 16: .I Rshd ! 17: listens for service requests at the port indicated in ! 18: the ``cmd'' service specification; see ! 19: .IR services (5). ! 20: When a service request is received the following protocol ! 21: is initiated: ! 22: .IP 1) ! 23: The server checks the client's source port. ! 24: If the port is not in the range 0-1023, the server ! 25: aborts the connection. ! 26: .IP 2) ! 27: The server reads characters from the socket up ! 28: to a null (`\e0') byte. The resultant string is ! 29: interpreted as an ASCII number, base 10. ! 30: .IP 3) ! 31: If the number received in step 1 is non-zero, ! 32: it is interpreted as the port number of a secondary ! 33: stream to be used for the ! 34: .BR stderr . ! 35: A second connection is then created to the specified ! 36: port on the client's machine. The source port of this ! 37: second connection is also in the range 0-1023. ! 38: .IP 4) ! 39: The server checks the client's source address. ! 40: If the address is associated with a host for which no ! 41: corresponding entry exists in the host name data base (see ! 42: .IR hosts (5)), ! 43: the server aborts the connection. ! 44: .IP 5) ! 45: A null terminated user name of at most 16 characters ! 46: is retrieved on the initial socket. This user name ! 47: is interpreted as a user identity to use on the ! 48: .BR server 's ! 49: machine. ! 50: .IP 6) ! 51: A null terminated user name of at most 16 characters ! 52: is retrieved on the initial socket. This user name ! 53: is interpreted as the user identity on the ! 54: .BR client 's ! 55: machine. ! 56: .IP 7) ! 57: A null terminated command to be passed to a ! 58: shell is retrieved on the initial socket. The length of ! 59: the command is limited by the upper bound on the size of ! 60: the system's argument list. ! 61: .IP 8) ! 62: .I Rshd ! 63: then validates the user according to the following steps. ! 64: The remote user name is looked up in the password file ! 65: and a ! 66: .I chdir ! 67: is performed to the user's home directory. If either ! 68: the lookup or ! 69: .I chdir ! 70: fail, the connection is terminated. ! 71: If the user is not the super-user, (user id 0), the file ! 72: .I /etc/hosts.equiv ! 73: is consulted for a list of hosts considered ``equivalent''. ! 74: If the client's host name is present in this file, the ! 75: authentication is considered successful. If the lookup ! 76: fails, or the user is the super-user, then the file ! 77: .I .rhosts ! 78: in the home directory of the remote user is checked for ! 79: the machine name and identity of the user on the client's ! 80: machine. If this lookup fails, the connection is terminated. ! 81: .IP 9) ! 82: A null byte is returned on the connection associated ! 83: with the ! 84: .B stderr ! 85: and the command line is passed to the normal login ! 86: shell of the user. The ! 87: shell inherits the network connections established ! 88: by ! 89: .IR rshd . ! 90: .SH DIAGNOSTICS ! 91: All diagnostic messages are returned on the connection ! 92: associated with the ! 93: .BR stderr , ! 94: after which any network connections are closed. ! 95: An error is indicated by a leading byte with a value of ! 96: 1 (0 is returned in step 9 above upon successful completion ! 97: of all the steps prior to the command execution). ! 98: .PP ! 99: .B ``locuser too long'' ! 100: .br ! 101: The name of the user on the client's machine is ! 102: longer than 16 characters. ! 103: .PP ! 104: .B ``remuser too long'' ! 105: .br ! 106: The name of the user on the remote machine is ! 107: longer than 16 characters. ! 108: .PP ! 109: .B ``command too long '' ! 110: .br ! 111: The command line passed exceeds the size of the argument ! 112: list (as configured into the system). ! 113: .PP ! 114: .B ``Hostname for your address unknown.'' ! 115: .br ! 116: No entry in the host name database existed for ! 117: the client's machine. ! 118: .PP ! 119: .B ``Login incorrect.'' ! 120: .br ! 121: No password file entry for the user name existed. ! 122: .PP ! 123: .B ``No remote directory.'' ! 124: .br ! 125: The ! 126: .I chdir ! 127: command to the home directory failed. ! 128: .PP ! 129: .B ``Permission denied.'' ! 130: .br ! 131: The authentication procedure described above failed. ! 132: .PP ! 133: .B ``Can't make pipe.'' ! 134: .br ! 135: The pipe needed for the ! 136: .BR stderr , ! 137: wasn't created. ! 138: .PP ! 139: .B ``Try again.'' ! 140: .br ! 141: A ! 142: .I fork ! 143: by the server failed. ! 144: .PP ! 145: .B ``/bin/sh: ...'' ! 146: .br ! 147: The user's login shell could not be started. ! 148: .SH SEE ALSO ! 149: rsh(1C), ! 150: rcmd(3X) ! 151: .SH BUGS ! 152: The authentication procedure used here assumes the integrity ! 153: of each client machine and the connecting medium. This is ! 154: insecure, but is useful in an ``open'' environment. ! 155: .PP ! 156: A facility to allow all data exchanges to be encrypted should be ! 157: present.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.