Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       rcmd,  rresvport,  iruserok, ruserok, rcmd_af, rresvport_af, iruserok_af, ruserok_af - Routines renvoyant
       un flux de données pour une commande invoquée à distance

SYNOPSIS

       #include <netdb.h>   /* Ou <unistd.h> sur certains systèmes */

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

       int rresvport(int *port);

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

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

       int rcmd_af(char **ahost, int inport, const char *locuser,
                   const char *remuser, const char *cmd, int *fd2p,
                   sa_family_t af);

       int rresvport_af(int *port, sa_family_t af);

       int iruserok_af(uint32_t raddr, int superuser,
                       const char *ruser, const char *luser, sa_family_t af);

       int ruserok_af(const char *rhost, int superuser,
                      const char *ruser, const char *luser, sa_family_t af);

   Exigences de macros de test de fonctionnalités pour la glibc (consultez feature_test_macros(7)) :

       rcmd(), rcmd_af(), rresvport(),  rresvport_af(),  iruserok(),  iruserok_af(),  ruserok(),  ruserok_af() :
       _BSD_SOURCE

DESCRIPTION

       La  fonction  rcmd()  est  utilisée  par  le  superutilisateur pour exécuter une commande sur une machine
       distante, en utilisant un schéma d'identification basé sur des numéros de ports privilégié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  rcmd().  Les quatre fonctions sont utilisées (entre autres) par le
       serveur rshd(8).

   rcmd()
       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  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 diagnostic (numéro 2) sur ce canal, et acceptera  également
       des  octets  qu'il  considérera  comme  des numéros 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).

   rresvport()
       La fonction rresvport() est utilisée pour obtenir une socket attachée à un port privilégié. Cette  socket
       est  utilisable  ensuite  pour  rcmd() et plusieurs autres fonctions. Les numéros de ports privilégiés se
       trouvent dans l'intervalle 0 à 1023. Seul un processus privilégié (CAP_NET_BIND_SERVICE) a  le  droit  de
       s'associer à un port privilégié. Dans l'implémentation de la glibc, cette fonction restreint sa recherche
       du  port 512  au  port 1023.  L'argument port est valeur-résultat : la valeur qu'il fournit à l'appel est
       utilisée comme point de départ pour une recherche circulaire de l'intervalle de port ; au retour (en  cas
       de réussite), il contient le numéro de port avec lequel il a été associé.

   iruserok() et ruserok()
       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 superutilisateur
       « superuser ». Ainsi, si  l'utilisateur  n'est  pas  le  superutilisateur,  elles  vérifient  le  fichier
       /etc/hosts.equiv.  Si  cela  é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 superutilisateur, 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, iruserok() et ruserok() 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, iruserok() sera préférée à ruserok(), car elle ne nécessite
       pas d'avoir un serveur DNS digne de confiance pour le domaine distant.

   Variantes *_af()
       Toutes les fonctions décrites ci-dessus fonctionnent avec  des  sockets  IPv4  (AF_INET).  Les  variantes
       « _af »  prennent  un  argument supplémentaire qui permet d'indiquer la famille d'adresse de socket. Pour
       ces fonctions, l'argument af peut être indiqué comme AF_INET  ou  AF_INET6.  De  plus,  rcmd_af()  permet
       d'utiliser AF_UNSPEC.

VALEUR RENVOYÉE

       La  fonction  rcmd()  renvoie  un descripteur de socket valable si elle réussit, sinon elle renvoie -1 et
       affiche un message de diagnostic sur sa sortie d'erreur standard.

       La fonction rresvport() renvoie un descripteur de socket valable, 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 ci-dessus pour des renseignements sur les valeurs renvoyées par ruserok() et iruserok().

VERSIONS

       Les fonctions iruserok_af(), rcmd_af(), rresvport_af() et ruserok_af() sont fournies dans la glibc depuis
       la version 2.2.

CONFORMITÉ

       Pas  dans  POSIX.1-2001. Présentes sur les BSD, Solaris et beaucoup d'autres systèmes. Ces fonctions sont
       apparues dans BSD 4.2. Les variantes « _af » sont des ajouts plus récents, et ne sont pas  présentes  sur
       de nombreux systèmes.

BOGUES

       iruserok()  et  iruserok_af()  ne  sont  déclarées  dans les fichiers d'en-tête de la glibc que depuis la
       version 2.12.

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des
       instructions    pour    signaler    des    anomalies    peuvent     être     trouvées     à     l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe       Blaess       <http://www.blaess.fr/christophe/>      (1996-2003),      Alain      Portal
       <http://manpagesfr.free.fr/> (2003-2006). Nicolas François  et  l'équipe  francophone  de  traduction  de
       Debian (2006-2009).

       Veuillez  signaler  toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».

Linux                                             23 avril 2012                                          RCMD(3)