Provided by:
manpages-fr_1.67.0-1_all 
NOM
rcmd, rresvport, iruserok, ruserok - Routines renvoyant un flux de
données pour une commande invoquée à distance.
SYNOPSIS
#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);
DESCRIPTION
La fonction rcmd est utilisée par le Super-Utilisateur pour éxécuter
une commande sur une machine distante, en utilisant un shéma
d’identification basé sur des numéros de ports réservés.
La fonction rresvport renvoie un descripteur sur une socket se trouvant
dans l’espace des numéros de ports privilégiés.
Les fonctions iruserok et ruserok sont utilisées par les serveurs pour
identifier les clients demandant un service avec
Les 4 fonctions sont déclarées dans le même fichier et sont utilisées
par le serveur rshd(8) entre autres.
La fonction rcmd recherche l’hôte *ahost en utilisant gethostbyname(3),
puis renvoie -1 si cet hôte n’existe pas. Sinon *ahost est rempli avec
le nom standard de cet hôte, et une connexion est établie avec un
serveur se trouvant sur l’un des ports bien connus inport .
Si la connexion réussit, une socket dans le domaine Internet, et de
type SOCK_STREAM est renvoyée à l’appelant, et est fournie à la
commande distante en guise de stdin et stdout . Si fd2p est non-nul,
un canal auxiliaire est créé pour un processus de contrôle, et son
descripteur sera placé dans *fd2p. Le processus de contrôle renverra
les sorties de diagnostique (numéro 2) sur ce canal, et acceptera
également des octets qu’il considérera comme des numéro de signal UNIX
à envoyer au groupe de processus de la commande. Si fd2p est nul,
alors stderr (sortie numéro 2 de la commande distante) sera renvoyée
sur stdout et rien n’est prévu pour l’envoi de signaux arbitraires au
processus distant, bien que vous puissiez y parvenir en utilisant des
données hors-bande.
Le protocole est décrit en détail dans rshd(8).
La fonction rresvport est utilisée pour obtenir une socket attachée à
une adresse privilégiée. Cette socket est utilisable ensuite pour rcmd
et plusieurs autres fonctions. Les numéros de ports Internet
privilégiés se trouvent dans l’intervalle 0 à 1023. Seul le Super-
Utilisateur est autorisé à attacher une adresse de ce type à une
socket.
Les fonctions iruserok et ruserok prennent respectivement en argument
une adresse IP et un nom d’hôte distant, deux noms d’utilisateurs et un
drapeau indiquant si l’utilisateur local est Super-utilisateur. Ainsi,
si l’utilisateur n’est PAS le Super-Utilisateur, elles vérifient le
fichier /etc/hosts.equiv. Si ceci échoue, le fichier .rhosts est
recherché dans le répertoire personnel de l’utilisateur local, afin de
voir si la requête est autorisée.
Si ce fichier n’existe pas, ou s’il ne s’agit pas d’un fichier
régulier, ou s’il appartient à quelqu’un d’autre que l’utilisateur
local ou le super-utilisateur, ou encore s’il est accessible en
écriture par quelqu’un d’autre que son propriétaire, le test échoue
automatiquement. Si la machine est listée dans le fichier hosts.equiv,
ou si les noms d’hôte et d’utilisateur distants sont trouvés dans le
fichier .rhosts et renvoient zéro. Sinon elles renvoient -1. Si le
domaine local (obtenu par l’intermédiaire de gethostname(2)) est le
même que le domaine distant, seul le nom de machine a besoin d’être
indiqué.
Si l’adresse IP de l’hôte distant est connue, on utilisera de
préférence iruserok plutôt que ruserok qui nécessitent d’avoir un
serveur DNS digne de confiance pour le domaine distant.
DIAGNOSTIQUE
La fonction rcmd renvoie un descripteur de socket valide si elle
réussit, sinon elle renvoie -1 et affiche un message de diagnostique
sur sa sortie d’erreur standard.
La fonction rresvport renvoie un descripteur de socket valide, attaché
à une adresse privilégiée si elle réussit. Elle renvoie -1 sinon, et
errno contient le code d’erreur. Le code d’erreur EAGAIN signifie en
réalité ‘‘Tous les ports réseau sont déjà utilisés’’.
VOIR AUSSI
rlogin(1), rsh(1), rexec(3), rexecd(8), rlogind(8), rshd(8)
HISTORIQUE
Ces fonctions sont apparues dans BSD 4.2.
TRADUCTION
Christophe Blaess, 1998-2003.