dwww Home | Manual pages | Find package

rcmd(3)                    Library Functions Manual                    rcmd(3)

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(), iruse-
       rok_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'identi-
       fication  basé sur des numéros de ports privilégiés. La fonction rresv-
       port() 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  gethostby-
       name(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  dis-
       tante  en guise de stdin et stdout. Si fd2p est non nul, un canal auxi-
       liaire 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  nu-
       mé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  re-
       cherche 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 argu-
       ment 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 lo-
       cal, 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  su-
       perutilisateur, ou encore s'il est accessible en écriture par quelqu'un
       d'autre que son propriétaire, le test échoue automatiquement. Si la ma-
       chine  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émen-
       taire  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, atta-
       ché à 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(),        │ Sécurité des threads │ MT-Safe locale │
       │iruserok_af(), 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 va-
       riantes « _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  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.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.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.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⟩.

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

Generated by dwww version 1.15 on Sat Jun 29 01:15:46 CEST 2024.