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

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,
                   const char *ruser, const char *luser);

       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 différent de zéro, un canal
       auxiliaire  est  créé pour un processus de contrôle, et son descripteur placé dans *fd2p. Le processus de
       contrôle renverra les sorties de sera 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 0, 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().

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

       BSD.

HISTORIQUE

       iruserok_af()
       rcmd_af()
       rresvport_af()
       ruserok_af()
              glibc 2.2.

       Solaris,  4.2BSD.  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 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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                            rcmd(3)