rcmd(3x)rcmd(3x)Name
rcmd, rresvport, ruserok - routines for returning a stream to a remote
command
Syntax
rem = rcmd(ahost, inport, locuser, remuser, cmd, fd2p);
char **ahost;
u_short 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
The subroutine is used by the superuser to execute a command on a
remote machine using an authentication scheme based on reserved port
numbers. The subroutine is a routine that returns a descriptor to a
socket with an address in the privileged port space. The subroutine is
a routine used by servers to authenticate clients requesting service
with All three functions are present in the same file and are used by
the server (among others).
The subroutine looks up the host *ahost using returning -1 if the host
does not exist. For further information, see 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 chan‐
nel, and will also accept bytes on this channel as being UNIX 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 sig‐
nals to the remote process, although you may be able to get its atten‐
tion by using out-of-band data.
The protocol is described in detail in
The subroutine is used to obtain a socket with a privileged address
bound to it. This socket is suitable for use by and several other rou‐
tines. 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.
The subroutine takes a remote host's name, as returned by a routine,
two user names and a flag indicating if the local user's name is the
superuser. It then checks the files and in the 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 file, or the host and remote user name
are found in the file. Otherwise returns -1. If the superuser flag is
1, the checking of the file is bypassed.
See Alsorlogin(1c), rsh(1c), gethostent(3n), rexec(3x), rexecd(8c),
rlogind(8c), rshd(8c)rcmd(3x)