Provided by: manpages-fr-dev_4.19.0-7_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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

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

       int rcmd(char **restrict ahost, unsigned short inport,
                   const char *restrict locuser,
                   const char *restrict remuser,
                   const char *restrict cmd, int *restrict 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,

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

       int rresvport_af(int *port, sa_family_t af);

       int iruserok_af(const void *restrict raddr, int superuser,
                   const char *restrict ruser, const char *restrict 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    (consulter
   feature_test_macros(7)) :

       rcmd(), rcmd_af(), rresvport(), rresvport_af(), iruserok(), iruserok_af(), ruserok(),
       ruserok_af() :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE
           glibc 2.19 et antérieures :
               _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 de fichier sur  un  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  authentifier  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, un socket dans  le  domaine  Internet  de  type  SOCK_STREAM  est
       renvoyé  à l'appelant et est fourni à 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 un socket attaché à un port  privilégié.
       Ce 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 un nom ou une
       adresse  IP  d'hôte  distant,  deux  noms  d'utilisateurs  et  un  drapeau  indiquant   si
       l'utilisateur  local  est le 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, s'il ne s'agit pas d'un fichier ordinaire, 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
       depuis la glibc 2.2.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌─────────────────────────────────────────────────┬──────────────────────┬────────────────┐
       │InterfaceAttributValeur         │
       ├─────────────────────────────────────────────────┼──────────────────────┼────────────────┤
       │rcmd(), rcmd_af()                                │ Sécurité des threads │ MT-Unsafe      │
       ├─────────────────────────────────────────────────┼──────────────────────┼────────────────┤
       │rresvport(), rresvport_af()                      │ Sécurité des threads │ MT-Safe        │
       ├─────────────────────────────────────────────────┼──────────────────────┼────────────────┤
       │iruserok(), ruserok(), iruserok_af(),            │ Sécurité des threads │ MT-Safe locale │
       │ruserok_af()                                     │                      │                │
       └─────────────────────────────────────────────────┴──────────────────────┴────────────────┘

STANDARDS

       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 glibc 2.12.

VOIR AUSSI

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

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et bubu <bubub@no-log.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.