Provided by: manpages-es_1.55-8_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ÓN

       La  función  rcmd  es  utilizada  por el superusuario para ejecutar una
       orden en una máquina remota usando un esquema de  autenticación  basado
       en  números  de  puertos  reservados.  La función rresvport devuelve el
       descriptor de un enchufe (socket) cuya dirección 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   función   rcmd   busca   al   anfitrión   (host)   *ahost   usando
       gethostbyname(3),  devolviendo  -1  si el anfitrión no existe.  En caso
       contrario, se asigna a *ahost el nombre estándar  del  anfitrión  y  se
       establece una conexión con el servidor que reside en el, bien definido,
       puerto de Internet inport.

       Si la conexión tiene éxito, se devuelve al invocador un  socket  dentro
       del  dominio  de  Internet  del  tipo  SOCK_STREAM,  y  dicho socket se
       convierte en la entrada estándar (stdin) y la salida estándar  (stdout)
       de  la  orden  remota.  Si fd2p no es cero, se creará un canal auxiliar
       hacia un proceso de control y en *fd2p se colocará un  descriptor  para
       dicho  canal.   El  proceso  de  control  devolverá  la salida de error
       (descriptor de fichero número 2) de la orden remota sobre este canal, y
       también  aceptará sobre este canal el envío de bytes que se comportarán
       como números de señal de UNIX para ser enviados al grupo de procesos de
       la  orden.  Si fd2p es 0, entonces la salida de error estándar (stderr)
       (descriptor de fichero número 2 de la orden remota) coincidirán con  la
       salida estándar (stdout) y no habrá forma de enviar señales arbitrarias
       al proceso remoto, aunque podrá llamar su atención usando datos  "fuera
       de orden" (out-of-band).

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

       La  función  rresvport  se utiliza para obtener un socket que tenga una
       dirección privilegiada ligada a él. 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.  Sólo  el  superusuario
       puede ligar una dirección de este tipo a un socket.

       Las  funciones  iruserok y ruserok toman la dirección IP o el nombre de
       un anfitrión remoto, respectivamente, dos  nombres  de  usuario  y  una
       bandera  que  indica  si  el  nombre  del  usuario local es o no el del
       superusuario.  A continuación, si el usuario  NO  es  el  superusuario,
       comprueba el fichero /etc/hosts.equiv.  Si dicha búsqueda no se realiza
       o no tiene éxito, se comprueba el fichero .rhosts en el directorio raíz
       (home)  del  usuario  local  para  ver  si  se  permite  la petición 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   comprobación   fracasa
       automáticamente.   Si  el  nombre  de  la máquina aparece en el fichero
       hosts.equiv o si el  anfitrión  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, sólo se necesita
       especificar el nombre de la máquina.

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

ERRORES

       La función rcmd devuelve un descriptor válido  de  socket  en  caso  de
       éxito. Devuelve -1 en caso de error y muestra un mensaje de error en la
       salida de error estándar.

       La función rresvport devuelve un descriptor  de  socket  válido,  y  ya
       ligado,  en  caso  de  éxito.   Devuelve -1 en caso de error y asigna a
       errno un valor que  indica  la  razón  del  fallo.   Se  sobrecarga  el
       significado  del  código  de  error EAGAIN para indicar que ‘‘Todos los
       puertos de red están en uso.’’

VÉASE TAMBIÉN

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

HISTORIA

       Estas funciones aparecieron en 4.2BSD.