Provided by: manpages-es_1.55-10_all bug

NOMBRE

       rcmd,  rresvport,  iruserok, ruserok - Funciones que devuelven un flujo
       (stream) hacia una orden remota

SINOPSIS

       #include <unistd.h>

       int rcmd(char **ahost, int inport,  const  char  *locuser,  const  char
       *remuser, const char *cmd, int *fd2p)

       int rresvport(int *port)

       int  iruserok(u_int32_t  raddr, int superuser, const char *ruser, const
       char *luser)

       int ruserok(const char *rhost, int superuser, const char *ruser,  const
       char *luser)

DESCRIPCI'ON

       La  funcion  rcmd  es  utilizada  por el superusuario para ejecutar una
       orden en una maquina remota usando un esquema de  autenticacion  basado
       en  numeros  de  puertos  reservados.  La funcion rresvport devuelve el
       descriptor de un enchufe (socket) cuya direccion cae dentro del espacio
       de  puertos  privilegidados.   Los  servidores  utilizan  las funciones
       iruserok y  ruserok  para  autenticar  a  los  clientes  que  solicitan
       servicios  mediante  rcmd.   Estas cuatro funciones se encuentran en el
       mismo fichero y son usadas por el servidor rshd(8) (entre otros).

       La   funcion   rcmd   busca   al   anfitrion   (host)   *ahost   usando
       gethostbyname(3),  devolviendo  -1  si el anfitrion no existe.  En caso
       contrario, se asigna a *ahost el nombre estandar  del  anfitrion  y  se
       establece una conexion con el servidor que reside en el, bien definido,
       puerto de Internet inport.

       Si la conexion tiene exito, se devuelve al invocador un  socket  dentro
       del  dominio  de  Internet  del  tipo  SOCK_STREAM,  y  dicho socket se
       convierte en la entrada est'andar (stdin) y la salida est'andar  (stdout)
       de  la  orden  remota.  Si fd2p no es cero, se creara un canal auxiliar
       hacia un proceso de control y en *fd2p se colocara un  descriptor  para
       dicho  canal.   El  proceso  de  control  devolvera  la salida de error
       (descriptor de fichero numero 2) de la orden remota sobre este canal, y
       tambien  aceptara sobre este canal el envio de bytes que se comportaran
       como numeros de senal de UNIX para ser enviados al grupo de procesos de
       la  orden.  Si fd2p es 0, entonces la salida de error est'andar (stderr)
       (descriptor de fichero numero 2 de la orden remota) coincidiran con  la
       salida est'andar (stdout) y no habra forma de enviar senales arbitrarias
       al proceso remoto, aunque podra llamar su atencion usando datos  "fuera
       de orden" (out-of-band).

       El protocolo se describe con detalle en rshd(8).

       La  funcion  rresvport  se utiliza para obtener un socket que tenga una
       direccion privilegiada ligada a el. Este socket es  adecuado  para  ser
       usado  por  rcmd  y  otras  funciones diversas. Los puertos de Internet
       privilegiados son aquellos que van de 0 a 1023.  Solo  el  superusuario
       puede ligar una direccion de este tipo a un socket.

       Las  funciones  iruserok y ruserok toman la direccion IP o el nombre de
       un anfitrion remoto, respectivamente, dos  nombres  de  usuario  y  una
       bandera  que  indica  si  el  nombre  del  usuario local es o no el del
       superusuario.  A continuacion, si el usuario  NO  es  el  superusuario,
       comprueba el fichero /etc/hosts.equiv.  Si dicha busqueda no se realiza
       o no tiene exito, se comprueba el fichero .rhosts en el directorio raiz
       (home)  del  usuario  local  para  ver  si  se  permite  la peticion de
       servicio.

       Si el fichero no existe, no es un fichero regular, pertenece a  alguien
       que  no  es  el  usuario  ni  el  superusuario, o puede ser escrito por
       alguien  que  no  sea   el   propietario,   la   comprobacion   fracasa
       automaticamente.   Si  el  nombre  de  la maquina aparece en el fichero
       hosts.equiv o si el  anfitrion  y  el  nombre  del  usuario  remoto  se
       encuentran  en  el fichero .rhosts, se devuelve un 0; en caso contrario
       iruserok y ruserok devuelven -1.  Si el dominio local (como se  obtiene
       de  gethostname(2)) es el mismo que el dominio remoto, solo se necesita
       especificar el nombre de la maquina.

       Si se conoce la direccion IP del anfitrion remoto,  preferentemente  se
       debe usar iruserok en lugar de ruserok, ya que no necesita consultar al
       servidor DNS para el dominio del anfitrion remoto.

ERRORES

       La funcion rcmd devuelve un descriptor valido  de  socket  en  caso  de
       exito. Devuelve -1 en caso de error y muestra un mensaje de error en la
       salida de error estandar.

       La funcion rresvport devuelve un descriptor  de  socket  valido,  y  ya
       ligado,  en  caso  de  exito.   Devuelve -1 en caso de error y asigna a
       errno un valor que  indica  la  razon  del  fallo.   Se  sobrecarga  el
       significado  del  codigo  de  error EAGAIN para indicar que ``Todos los
       puertos de red estan en uso.''

V'EASE TAMBI'EN

       rlogin(1), rsh(1), intro(2), rexec(3), rexecd(8), rlogind(8), rshd(8)

HISTORIA

       Estas funciones aparecieron en 4.2BSD.