unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (4.2BSD)
Page:
Section:
Apropos / Subsearch:
optional field

RCMD(3X)                                                              RCMD(3X)



NAME
       rcmd,  rresvport, ruserok - routines for returning a stream to a remote
       command

SYNOPSIS
       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
       Rcmd is a routine used by the super-user 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 privileged port space.  Ruserok is a routine
       used by servers to authenticate clients requesting service  with  rcmd.
       All  three  functions  are present in the same file and are used by the
       rshd(8C) server (among others).

       Rcmd looks up the host *ahost using gethostbyname(3N), returning -1  if
       the  host does not exist.  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 non-zero, 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 UNIX  sig-
       nal  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, although you may  be  able  to  get  its
       attention by using out-of-band data.

       The protocol is described in detail in rshd(8C).

       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
       sevral  other  routines.  Privileged addresses consist of a port in the
       range 0 to 1023.  Only the super-user 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 super-user.  It then checks the files /etc/hosts.equiv and, pos-
       sibly, .rhosts in the current working  directory  (normally  the  local
       user's home directory) to see if the request for service is allowed.  A
       1 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 0.  If the superuser  flag  is  1,  the
       checking of the ``host.equiv'' file is bypassed.

SEE ALSO
       rlogin(1C), rsh(1C), rexec(3X), rexecd(8C), rlogind(8C), rshd(8C)

BUGS
       There is no way to specify options to the socket call which rcmd makes.



4th Berkeley Distribution        17 March 1982                        RCMD(3X)