Scroll to navigation

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 donnes pour une commande invoque distance

BIBLIOTHÈQUE

Bibliothèque C standard (libc, -lc)

SYNOPSIS

#include <netdb.h>    /* Ou <unistd.h> sur certains systmes */
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 utilise par le superutilisateur pour excuter une commande sur une machine distante, en utilisant un schma d'identification bas sur des numros de ports privilgis. La fonction rresvport() renvoie un descripteur de fichier sur un socket se trouvant dans l'espace des numros de ports privilgis. Les fonctions iruserok() et ruserok() sont utilises par les serveurs pour authentifier les clients demandant un service avec rcmd(). Les quatre fonctions sont utilises (entre autres) par le serveur rshd(8).

rcmd()

La fonction rcmd() recherche l'hte *ahost en utilisant gethostbyname(3), puis renvoie -1 si cet hte n'existe pas. Sinon, *ahost est rempli avec le nom standard de cet hte et une connexion est tablie avec un serveur se trouvant sur l'un des ports bien connus inport.

Si la connexion russit, 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 contrle, et son descripteur sera plac dans *fd2p. Le processus de contrle renverra les sorties de diagnostic (numro 2) sur ce canal, et acceptera galement des octets qu'il considrera comme des numros de signal UNIX envoyer au groupe de processus de la commande. Si fd2p est nul, alors stderr (sortie numro2 de la commande distante) sera renvoye sur stdout et rien n'est prvu pour l'envoi de signaux arbitraires au processus distant, bien que vous puissiez y parvenir en utilisant des donnes hors-bande.

Le protocole est dcrit en dtail dans rshd(8).

rresvport()

La fonction rresvport() est utilise pour obtenir un socket attach un port privilgi. Ce socket est utilisable ensuite pour rcmd() et plusieurs autres fonctions. Les numros de ports privilgis se trouvent dans l'intervalle0 1023. Seul un processus privilgi (CAP_NET_BIND_SERVICE) a le droit de s'associer un port privilgi. Dans l'implmentation de la glibc, cette fonction restreint sa recherche du port512 au port1023. L'argument port est valeur-rsultat: la valeur qu'il fournit l'appel est utilise comme point de dpart pour une recherche circulaire de l'intervalle de port; au retour (en cas de russite), il contient le numro 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'hte 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 vrifient le fichier /etc/hosts.equiv. Si cela choue, le fichier .rhosts est recherch dans le rpertoire personnel de l'utilisateur local, afin de voir si la requte est autorise.

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 propritaire, le test choue automatiquement. Si la machine est liste dans le fichier hosts.equiv, ou si les noms d'hte et d'utilisateur distants sont trouvs dans le fichier .rhosts, iruserok() et ruserok() renvoient zro. Sinon elles renvoient -1. Si le domaine local (obtenu par l'intermdiaire de gethostname(2)) est le mme que le domaine distant, seul le nom de machine a besoin d'tre indiqu.

Si l'adresse IP de l'hte distant est connue, iruserok() sera prfre ruserok(), car elle ne ncessite pas d'avoir un serveur DNS digne de confiance pour le domaine distant.

Variantes *_af()

Toutes les fonctions dcrites ci-dessus fonctionnent avec des sockets IPv4 (AF_INET). Les variantes _af prennent un argument supplmentaire 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 russit, 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 privilgie si elle russit. Elle renvoie -1 sinon, et errno contient le code d'erreur. Le code d'erreur EAGAIN signifie en ralit  Tous les ports rseau sont dj utiliss .

Voir ci-dessus pour des renseignements sur les valeurs renvoyes par ruserok() et iruserok().

ATTRIBUTS

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

Interface Attribut Valeur
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

glibc 2.2.

Solaris, 4.2BSD. The "_af" variants are more recent additions, and are not present on as wide a range of systems.

BOGUES

iruserok() et iruserok_af() ne sont dclares dans les fichiers d'en-tte de la glibc que depuis la glibc2.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 #-#-#-#-# min-002-occurences.po (perkamon) #-#-#-#-#, 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>, Jean-Philippe MENGUAL <jpmengual@debian.org>, Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, #-#-#-#-# min-003-occurences.po (perkamon) #-#-#-#-#, 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>, Jean-Philippe MENGUAL <jpmengual@debian.org>, Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, #-#-#-#-# min-004-occurences.po (perkamon) #-#-#-#-#, 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>, Jean-Philippe MENGUAL <jpmengual@debian.org>, Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, #-#-#-#-# min-010-occurences.po (perkamon) #-#-#-#-#, 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>, Thomas Vincent <tvincent@debian.org>, #-#-#-#-# min-020-occurences.po (perkamon) #-#-#-#-#, 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>, Jean-Philippe MENGUAL <jpmengual@debian.org>, Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, #-#-#-#-# min-100-occurences.po (perkamon) #-#-#-#-#, 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>, Jean-Philippe MENGUAL <jpmengual@debian.org>, Jean-Pierre Giraud <jean-pierregiraud@neuf.fr> et #

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.

20 juillet 2023 Pages du manuel de Linux 6.05.01