Loading

NOM

       rcmd,  rresvport,  iruserok,  ruserok  -  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);

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

       rcmd(), rresvport(), ruserok() : _BSD_SOURCE

       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 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 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).

       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
       superutilisateur 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
       superutilisateur « superuser ». Ainsi, si l’utilisateur  n’est  pas  le
       superutilisateur,  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 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,  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.

VALEUR RENVOYÉE

       La fonction rcmd() renvoie un descripteur  de  socket  valide  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  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 ».

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.

BOGUES

       iruserok() n’est pas déclarée dans les fichiers d’en-tête de la  glibc.

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.23 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

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>    et    l’équipe   francophone   de
       traduction de Debian.

       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> ».