RCMD(3N) COMMAND REFERENCE RCMD(3N)
NAME
rcmd, rresvport, ruserok - routines for returning a stream
to a remote command
SYNOPSIS
rem = rcmd(ahost, inport, locuser, remuser, cmd, fd2p);
char **ahost;
int inport;
char *locuser, *remuser, *cmd;
int *fd2p;
s = rresvport(port);
int *port;
ruserok(rhost, superuser, ruser, luser);
char *rhost;
int superuser;
char *ruser, *luser;
DESCRIPTION
Rcmd is a routine used by the superuser to execute a command
on a remote machine using an authentication scheme based on
reserved port numbers. Rresvport is a routine which returns
a descriptor to a socket with an address in the reserved
port space. Ruserok is a routine used by servers to
authenticate clients requesting service with rcmd. All
three functions are used by the rshd(8n) server (among
others).
Rcmd looks up the host *ahost returning -1 if the host does
not exist, or if some error occurred during or after setting
up the connection. Otherwise *ahost is set to the standard
name of the host and a connection is established to a server
residing at the well-known Internet port inport.
If the call succeeds, a socket of type SOCK_STREAM is
returned to the caller, and given to the remote command as
stdin and stdout. If fd2p is nonzero, then an auxiliary
channel to a control process will be set up, and a
descriptor for it will be placed in *fd2p. The control
process will return diagnostic output from the command (unit
2) on this channel, and will also accept bytes on this
channel as being UTek signal numbers, to be forwarded to the
process group of the command. If fd2p is 0, then the stderr
(unit 2 of the remote command) will be made the same as the
stdout and no provision is made for sending arbitrary
signals to the remote process; note that you may be able to
get its attention by using out-of-band data.
The protocol is described in detail in rshd(8n).
Printed 10/17/86 1
RCMD(3N) COMMAND REFERENCE RCMD(3N)
The rresvport routine is used to obtain a socket with a
privileged address bound to it. This socket is suitable for
use by rcmd and several other routines. Privileged
addresses consist of a port in the range 0 to 1023. Only
the superuser is allowed to bind an address of this sort to
a socket.
Ruserok takes a remote host's name, as returned by a
gethostent(3n) routine, two user names and a flag indicating
if the local user's name is the superuser. It then checks
the files /etc/hosts.equiv and, possibly, .rhosts in the
current working directory (normally the local user's home
directory) to see if the request for service is allowed. A
0 is returned if the machine name is listed in the
hosts.equiv file, or the host and remote user name are found
in the .rhosts file; otherwise ruserok returns -1. If the
superuser flag is 1, the checking of the host.equiv file is
bypassed.
CAVEATS
There is no way to specify options to the socket call which
rcmd makes.
SEE ALSO
rlogin(1n), rsh(1n), rexec(3n), hosts.equiv(5n),
rlogind(8n), rshd(8n).
Printed 10/17/86 2
%%index%%
na:72,119;
sy:191,1633;
de:1824,2095;4063,1265;
ca:5328,193;
se:5521,253;
%%index%%000000000107