Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
rcmd, rresvport, iruserok, ruserok - Routines renvoyant un flux de
donnees pour une commande invoquee a distance
SYNOPSIS
#include <netdb.h> /* Ou <unistd.h> sur certains systemes */
int rcmd(char **ahost, int inport, const char *locuser,
const char *remuser, const char *cmd, int *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);
Exigences de macros de test de fonctionnalites pour la glibc (consultez
feature_test_macros(7)) :
rcmd(), rresvport(), ruserok() : _BSD_SOURCE
DESCRIPTION
La fonction rcmd() est utilisee par le superutilisateur pour executer
une commande sur une machine distante, en utilisant un schema
d'identification base sur des numeros de ports privilegies. La fonction
rresvport() renvoie un descripteur sur une socket se trouvant dans
l'espace des numeros de ports privilegies. Les fonctions iruserok() et
ruserok() sont utilisees par les serveurs pour identifier les clients
demandant un service avec rcmd(). Les quatre fonctions sont declarees
dans le meme fichier et sont utilisees par le serveur rshd(8) (entre
autres).
La fonction rcmd() recherche l'hote *ahost en utilisant
gethostbyname(3), puis renvoie -1 si cet hote n'existe pas. Sinon
*ahost est rempli avec le nom standard de cet hote, et une connexion
est etablie avec un serveur se trouvant sur l'un des ports bien connus
inport.
Si la connexion reussit, une socket dans le domaine Internet de type
SOCK_STREAM est renvoyee a l'appelant, et est fournie a la commande
distante en guise de stdin et stdout. Si fd2p est non nul, un canal
auxiliaire est cree pour un processus de controle, et son descripteur
sera place dans *fd2p. Le processus de controle renverra les sorties de
diagnostic (numero 2) sur ce canal, et acceptera egalement des octets
qu'il considerera comme des numeros de signal Unix a envoyer au groupe
de processus de la commande. Si fd2p est nul, alors stderr (sortie
numero 2 de la commande distante) sera renvoyee sur stdout et rien
n'est prevu pour l'envoi de signaux arbitraires au processus distant,
bien que vous puissiez y parvenir en utilisant des donnees hors-bande.
Le protocole est decrit en detail dans rshd(8).
La fonction rresvport() est utilisee pour obtenir une socket attachee a
une adresse privilegiee. Cette socket est utilisable ensuite pour
rcmd() et plusieurs autres fonctions. Les numeros de ports Internet
privilegies se trouvent dans l'intervalle 0 a 1023. Seul le
superutilisateur est autorise a attacher une adresse de ce type a une
socket.
Les fonctions iruserok() et ruserok() prennent respectivement en
argument une adresse IP et un nom d'hote distant, deux noms
d'utilisateurs et un drapeau indiquant si l'utilisateur local est
superutilisateur << superuser >>. Ainsi, si l'utilisateur n'est pas le
superutilisateur, elles verifient le fichier /etc/hosts.equiv. Si ceci
echoue, le fichier .rhosts est recherche dans le repertoire personnel
de l'utilisateur local, afin de voir si la requete est autorisee.
Si ce fichier n'existe pas, ou s'il ne s'agit pas d'un fichier
regulier, ou s'il appartient a quelqu'un d'autre que l'utilisateur
local ou le superutilisateur, ou encore s'il est accessible en ecriture
par quelqu'un d'autre que son proprietaire, le test echoue
automatiquement. Si la machine est listee dans le fichier hosts.equiv,
ou si les noms d'hote et d'utilisateur distants sont trouves dans le
fichier .rhosts, iruserok() et ruserok() renvoient zero. Sinon elles
renvoient -1. Si le domaine local (obtenu par l'intermediaire de
gethostname(2)) est le meme que le domaine distant, seul le nom de
machine a besoin d'etre indique.
Si l'adresse IP de l'hote distant est connue, on utilisera de
preference iruserok() plutot que ruserok() qui necessitent d'avoir un
serveur DNS digne de confiance pour le domaine distant.
VALEUR RENVOY'EE
La fonction rcmd() renvoie un descripteur de socket valide si elle
reussit, sinon elle renvoie -1 et affiche un message de diagnostic sur
sa sortie d'erreur standard.
La fonction rresvport() renvoie un descripteur de socket valide,
attache a une adresse privilegiee si elle reussit. Elle renvoie -1
sinon, et errno contient le code d'erreur. Le code d'erreur EAGAIN
signifie en realite << Tous les ports reseau sont deja utilises >>.
CONFORMIT'E
Pas dans POSIX.1-2001. Presentes sur les BSD, Solaris et beaucoup
d'autres systemes. Ces fonctions sont apparues dans BSD 4.2.
BOGUES
iruserok() n'est pas declaree dans les fichiers d'en-tete de la glibc.
VOIR AUSSI
rlogin(1), rsh(1), intro(2), rexec(3), rexecd(8), rlogind(8), rshd(8)
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Nicolas
Francois et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.
Linux 28 decembre 2007 RCMD(3)