subrutina rcmd
Finalidad
Permite la ejecución de mandatos en un host remoto.
Biblioteca
Biblioteca C estándar (libc.a)
Sintaxis
Port, LocalUser, RemoteUser, Command, ErrFileDesc)
char ** Host;
u_short Port;
char * LocalUser;
char * RemoteUser;
char * Command;
int * ErrFileDesc;
Descripción
La subrutina rcmd permite la ejecución de determinados mandatos en un host remoto que soporta rshd, rloginy rpc entre otros.
Sólo los procesos con un ID de usuario efectivo de usuario root pueden utilizar la subrutina rcmd . Se utiliza un esquema de autenticación basado en números de puerto remotos para verificar los permisos. Los puertos en el rango entre 0 y 1023 sólo los puede utilizar un usuario root. La aplicación debe pasar en Puerto, que debe estar en el rango de 512 a 1023.
La subrutina rcmd busca un host a través del servidor de nombres o si el servidor de nombres local no se está ejecutando, en el archivo /etc/hosts .
Si la conexión es satisfactoria, un socket en el dominio de Internet de tipo SOCK_STREAM se devuelve al proceso de llamada y se proporciona al mandato remoto como entrada estándar (stdin) y salida estándar (stdout).
Especifique siempre el parámetro Host . Si el dominio local y el dominio remoto son iguales, la especificación de las partes del dominio es opcional.
Todas las aplicaciones que contienen la subrutina rcmd deben compilarse con la macro _BSD establecida en un valor específico. Los valores aceptables son 43 y 44. Además, todas las aplicaciones de socket deben incluir la biblioteca BSD libbsd.a .
Parámetros
| Elemento | Descripción |
|---|---|
| Nombre del servidor | Especifica el nombre de un host remoto que se lista en el archivo /etc/hosts . Si el nombre especificado del host no se encuentra en este archivo, la subrutina rcmd no se ejecuta correctamente. |
| Puerto | Especifica el puerto conocido públicamente que se debe utilizar para la conexión. El archivo /etc/services contiene los servicios de Internet DARPA, sus puertos y tipos de socket. |
| LocalUser y RemoteUser | Apunta a nombres de usuario que son válidos en el host local y remoto, respectivamente. Se puede proporcionar cualquier nombre de usuario válido. |
| Mandato | Especifica el nombre del mandato que se debe iniciar en el sistema principal remoto. |
| ErrFileDesc | Especifica un entero que controla la configuración de canales de comunicación. Las opciones de enteros son las siguientes:
|
Valores de retorno
Tras una finalización satisfactoria, la subrutina rcmd devuelve un descriptor de socket válido.
Si no se completa correctamente, la subrutina rcmd devuelve el valor -1. La subrutina devuelve un -1, si el ID de usuario efectivo del proceso de llamada no es el usuario root o si la subrutina no tiene éxito en resolver el host.
Archivos
| Elemento | Descripción |
|---|---|
| /etc/services | Contiene los nombres de servicio, los puertos y el tipo de socket. |
| /etc/hosts | Contiene nombres de host y sus direcciones para los hosts de una red. |
| /etc/resolv.conf | Contiene el servidor de nombres y el nombre de dominio. |