|
|
1.1 root 1: .TH RCMD 3X "17 March 1982"
2: .UC 4
3: .SH NAME
4: rcmd, rresvport, ruserok \- routines for returning a stream to a remote command
5: .SH SYNOPSIS
6: .nf
7: .B "rem = rcmd(ahost, inport, locuser, remuser, cmd, fd2p);"
8: .B char **ahost;
9: .B u_short inport;
10: .B "char *locuser, *remuser, *cmd;"
11: .B int *fd2p;
12: .PP
13: .B s = rresvport(port);
14: .B int *port;
15: .PP
16: .B "ruserok(rhost, superuser, ruser, luser);"
17: .B char *rhost;
18: .B int superuser;
19: .B char *ruser, *luser;
20: .fi
21: .SH DESCRIPTION
22: .I Rcmd
23: is a routine used by the super-user to execute a command on
24: a remote machine using an authentication scheme based
25: on reserved port numbers.
26: .I Rresvport
27: is a routine which returns a descriptor to a socket
28: with an address in the privileged port space.
29: .I Ruserok
30: is a routine used by servers
31: to authenticate clients requesting service with
32: .IR rcmd .
33: All three functions are present in the same file and are used
34: by the
35: .IR rshd (8C)
36: server (among others).
37: .PP
38: .I Rcmd
39: looks up the host
40: .I *ahost
41: using
42: .IR gethostbyname (3N),
43: returning \-1 if the host does not exist.
44: Otherwise
45: .I *ahost
46: is set to the standard name of the host
47: and a connection is established to a server
48: residing at the well-known Internet port
49: .IR inport .
50: .PP
51: If the call succeeds, a socket of type SOCK_STREAM
52: is returned to the caller, and given to the remote
53: command as
54: .B stdin
55: and
56: .BR stdout .
57: If
58: .I fd2p
59: is non-zero, then an auxiliary channel to a control
60: process will be set up, and a descriptor for it will be placed
61: in
62: .IR *fd2p .
63: The control process will return diagnostic
64: output from the command (unit 2) on this channel, and will also
65: accept bytes on this channel as being UNIX signal numbers, to be
66: forwarded to the process group of the command.
67: If
68: .I fd2p
69: is 0, then the
70: .B stderr
71: (unit 2 of the remote
72: command) will be made the same as the
73: .B stdout
74: and no
75: provision is made for sending arbitrary signals to the remote process,
76: although you may be able to get its attention by using out-of-band data.
77: .PP
78: The protocol is described in detail in
79: .IR rshd (8C).
80: .PP
81: The
82: .I rresvport
83: routine is used to obtain a socket with a privileged
84: address bound to it. This socket is suitable for use
85: by
86: .I rcmd
87: and sevral other routines. Privileged addresses consist
88: of a port in the range 0 to 1023. Only the super-user
89: is allowed to bind an address of this sort to a socket.
90: .PP
91: .I Ruserok
92: takes a remote host's name, as returned by a
93: .IR gethostent (3N)
94: routine, two user names and a flag indicating if
95: the local user's name is the super-user. It then
96: checks the files
97: .I /etc/hosts.equiv
98: and, possibly,
99: .I .rhosts
100: in the current working directory (normally the local
101: user's home directory) to see if the request for
102: service is allowed. A 1 is returned if the machine
103: name is listed in the ``hosts.equiv'' file, or the
104: host and remote user name are found in the ``.rhosts''
105: file; otherwise
106: .I ruserok
107: returns 0. If the
108: .I superuser
109: flag is 1, the checking of the ``host.equiv'' file is
110: bypassed.
111: .SH SEE ALSO
112: rlogin(1C),
113: rsh(1C),
114: rexec(3X),
115: rexecd(8C),
116: rlogind(8C),
117: rshd(8C)
118: .SH BUGS
119: There is no way to specify options to the
120: .I socket
121: call
122: which
123: .I rcmd
124: makes.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.