Provided by: manpages-fr-dev_4.21.0-2_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(), ruserok_af()            │ Sécurité des threads │ MT-Safe locale │
       └───────────────────────────────────────────────────────────────┴──────────────────────┴────────────────┘

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  <tvi‐
       gnaud@mandriva.com>,  François  Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fe‐
       vrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau  <jcristau@de‐
       bian.org>,   Thomas   Huriaux   <thomas.huriaux@gmail.com>,  Nicolas  François  <nicolas.francois@centra‐
       liens.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 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 à de‐
       bian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.03                    5 février 2023                                          rcmd(3)