MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Sockets Library Functions                           rcmd(3SOCKET)



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

SYNOPSIS
     cc [ flag ... ] file... -lsocket  -lnsl  [ library... ]
     #include 
     #include 

     int rcmd(char **ahost, unsigned short inport, const char *luser,
          const char *ruser, const char *cmd, int *fd2p);


     int rcmdaf(char **ahost, unsigned short inport, const char *luser,
          const char *ruser, const char *cmd, int *fd2p, int af);


     int rresvport(int *port);


     int rresvportaf(int *port, int af);


     int ruserok(const char *rhost, int suser, const char *ruser,
          const char *luser);


DESCRIPTION
     The rcmd() function is used by the superuser  to  execute  a
     command  on  a  remote machine with an authentication scheme
     based  on  reserved  port  numbers.  An  AFINET  socket  is
     returned   with  rcmd().  The  rcmdaf()  function  supports
     AFINET, AFINET6 or AFUNSPEC for the  address  family.  An
     application  can  choose which type of socket is returned by
     passing AFINET or AFINET6 as the address family.  The  use
     of  AFUNSPEC  means that the caller will accept any address
     family. Choosing AFUNSPEC provides a socket that best suits
     the connectivity to the remote host.


     The rresvport() function returns a descriptor  to  a  socket
     with   an   address   in  the  privileged  port  space.  The
     rresvportaf() function is the  equivalent  to  rresvport(),
     except that you can choose AFINET or AFINET6 as the socket
     address family to be returned by  rresvportaf().  AFUNSPEC
     does not apply to the rresvport() function.


     The ruserok() function is  a  routine  used  by  servers  to
     authenticate clients that request as service with rcmd.





SunOS 5.11          Last change: 10 Feb 2004                    1






Sockets Library Functions                           rcmd(3SOCKET)



     All of these functions are present in the same file and  are
     used by the in.rshd(1M) server among others.


     The rcmd() and rcmdaf() functions look up the  host  *ahost
     using  getaddrinfo(3SOCKET)  and  return -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 resid-
     ing at the Internet port inport.


     If the connection succeeds, a socket in the Internet  domain
     of type SOCKSTREAM is returned to the caller. The socket is
     given to the remote command as standard input (file descrip-
     tor  0)  and standard output (file descriptor 1). If fd2p is
     non-zero, an auxiliary channel to a control process  is  set
     up  and  a descriptor for it is placed in *fd2p. The control
     process returns diagnostic output file (descriptor  2)  from
     the  command  on  the auxiliary channel. The control process
     also accepts bytes on this channel as signal numbers  to  be
     forwarded to the process group of the command. If fd2p is 0,
     the standard error (file descriptor 2) of the remote command
     is  made  the  same  as its standard output. No provision is
     made for sending arbitrary signals to  the  remote  process,
     other than possibly sending out-of-band data.


     The protocol is described in detail in in.rshd(1M).


     The rresvport() and rresvportaf()  functions  are  used  to
     obtain  a  socket  bound  to  a  privileged port number. The
     socket is suitable for use by rcmd() and rresvportaf()  and
     several  other routines. Privileged Internet ports are those
     in the range 1 to 1023. Only the  superuser  is  allowed  to
     bind  a  socket to a privileged port number. The application
     must pass in port, which must be in the range 512  to  1023.
     The  system  first tries to bind to that port number.  If it
     fails, the system then  tries  to  bind  to  another  unused
     privileged port, if one is available.


     The ruserok() function takes a remote host name returned  by
     the  gethostbyaddr() function with two user names and a flag
     to indicate whether the local user's name  is  that  of  the
     superuser.  See  gethostbyname(3NSL). The ruserok() function
     then checks the files /etc/hosts.equiv and possibly  .rhosts
     in the local user's home directory to see if the request for
     service is allowed. A 0 value is  returned  if  the  machine
     name  is listed in the /etc/hosts.equiv file, or if the host
     and remote user name are found in the .rhosts  file.  Other-
     wise,  the  ruserok()  function returns -1. If the superuser



SunOS 5.11          Last change: 10 Feb 2004                    2






Sockets Library Functions                           rcmd(3SOCKET)



     flag is 1, the /etc/hosts.equiv is not checked.


     The error code EAGAIN is overloaded  to  mean  "All  network
     ports in use."

RETURN VALUES
     The rcmd() and rcmdaf() functions  return  a  valid  socket
     descriptor upon success. The functions returns -1 upon error
     and print a diagnostic message to standard error.


     The rresvport() and rresvportaf() functions return a valid,
     bound  socket  descriptor upon success. The functions return
     -1 upon error with the global value errno set  according  to
     the reason for failure.

FILES
     /etc/hosts.equiv    system trusted hosts and users


     ~/.rhosts           user's trusted hosts and users


ATRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:



     
           ATRIBUTE TYPE               ATRIBUTE VALUE       
    
     MT-Level                     Unsafe                      
    



     This interface  is  Unsafe  in  multithreaded  applications.
     Unsafe  interfaces  should  be  called  only  from  the main
     thread.

SEE ALSO
     rlogin(1),  rsh(1),  in.rexecd(1M),  in.rshd(1M),  Intro(2),
     getaddrinfo(3SOCKET),  gethostbyname(3NSL),  rexec(3SOCKET),
     attributes(5)









SunOS 5.11          Last change: 10 Feb 2004                    3



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™