Man page - fexecve(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

fexecve

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
STANDARDS
HISTORIQUE
NOTES
BOGUES
VOIR AUSSI
TRADUCTION

NOM

fexecve - Exécuter un programme indiqué par un descripteur de fichier

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <unistd.h>

int fexecve(int fd , char *const argv [], char *const envp []);

Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros (7)) :

fexecve () :
Depuis la glibc 2.10 :
_POSIX_C_SOURCE >= 200809L
Avant la glibc 2.10 :
_GNU_SOURCE

DESCRIPTION

fexecve () effectue la mĂȘme tĂąche que execve (2), exceptĂ© que le fichier Ă  exĂ©cuter est indiquĂ© Ă  l’aide d’un descripteur de fichier fd au lieu d’un chemin. Le descripteur de fichier fd doit ĂȘtre ouvert en lecture seule ( O_RDONLY ) ou avec le drapeau O_PATH , et l’appelant doit avoir les permissions nĂ©cessaires pour exĂ©cuter le fichier liĂ© au descripteur de fichier.

VALEUR RENVOYÉE

En cas de rĂ©ussite, la fonction fexecve () ne rend pas la main. En cas d’erreur, la fonction renvoie -1 et errno est dĂ©finie avec le code d’erreur correspondant.

ERREURS

Les erreurs sont les mĂȘmes que pour execve (2), avec en plus :

EINVAL

fd n’est pas un descripteur de fichier valable, ou argv est NULL, ou envp est NULL.

ENOENT

Le drapeau close-on-exec est défini pour le descripteur de fichier fd et fd est associé à un script. Voir BOGUES.

ENOSYS

Le noyau ne prend pas en charge l’appel systĂšme execveat (2) et l’accĂšs Ă  l’arborescence /proc a Ă©chouĂ©.

ATTRIBUTS

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

Image grohtml-3895430-1.png

STANDARDS

POSIX.1-2008.

HISTORIQUE

glibc 2.3.2.

Sous Linux avec les versions 2.26 et antĂ©rieures de la glibc, fexecve () est implĂ©mentĂ©e en utilisant l’arborescence proc (5) ; /proc doit donc ĂȘtre montĂ©e et disponible au moment de l’appel. Depuis la version 2.27 de la glibc et si le noyau prend en charge l’appel systĂšme execveat (2), fexecve () est implĂ©mentĂ© en utilisant cet appel systĂšme, ce qui a pour avantage de ne pas nĂ©cessiter le montage de /proc .

NOTES

L’idĂ©e derriĂšre fexecve () est de permettre Ă  l’appelant de vĂ©rifier (avec une somme de contrĂŽle) le contenu d’un exĂ©cutable avant de l’exĂ©cuter. Juste ouvrir le fichier et calculer la somme de contrĂŽle du contenu avant de faire un execve () ne suffirait pas puisque, entre les deux Ă©tapes, la partie chemin du nom du fichier ou le nom de fichier lui-mĂȘme pourraient avoir Ă©tĂ© modifiĂ©s (par exemple en modifiant la cible d’un lien symbolique). fexecve () n’attĂ©nue pas le problĂšme liĂ© au fait que le contenu d’un fichier pourrait ĂȘtre modifiĂ© entre le calcul de la somme de contrĂŽle et l’appel Ă  fexecve (). Pour cela, la solution consiste Ă  s’assurer que les permissions sur le fichier l’empĂȘchent d’ĂȘtre modifiĂ© par un utilisateur malveillant.

L’idĂ©e sous-jacente Ă  l’utilisation de fexecve () consiste Ă  dĂ©finir le drapeau close-on-exec pour le descripteur de fichier fd de façon Ă  ce que ce dernier ne se propage pas vers le programme exĂ©cutĂ©. Cette approche est naturelle pour deux raisons. PremiĂšrement, elle Ă©vite une consommation inutile de descripteurs de fichiers (normalement, le programme exĂ©cutĂ© n’a nul besoin d’un descripteur de fichier associĂ© Ă  lui-mĂȘme). DeuxiĂšmement, si fexecve () est utilisĂ© de maniĂšre rĂ©cursive, l’emploi du drapeau close-on-exec empĂȘche l’épuisement des descripteurs de fichiers disponibles qui pourrait dĂ©couler du fait que chaque Ă©tape du traitement rĂ©cursif provoque la transmission d’un ou plusieurs descripteurs de fichiers au nouveau programme (voir tout de mĂȘme BOGUES Ă  ce sujet).

BOGUES

Si le descripteur de fichier fd est associĂ© Ă  un script (autrement dit un fichier texte exĂ©cutable dont la premiĂšre ligne qui commence par les caractĂšres #! dĂ©signe l’interprĂ©teur du script), et si le drapeau close-on-exec a Ă©tĂ© dĂ©fini pour le descripteur de fichier fd , fexecve () Ă©choue avec un code d’erreur ENOENT . Cette erreur est due au fait qu’au moment oĂč l’interprĂ©teur du script s’exĂ©cute, le descripteur de fichier fd a dĂ©jĂ  Ă©tĂ© fermĂ© Ă  cause de la prĂ©sence du drapeau close-on-exec. C’est pourquoi le drapeau close-on-exec ne peut pas ĂȘtre dĂ©fini pour le descripteur de fichier fd si ce dernier est associĂ© Ă  un script, ce qui provoquerait les problĂšmes dĂ©crits dans NOTES.

VOIR AUSSI

execve (2), execveat (2)

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 Lucien Gentis <lucien.gentis@waika9.com>

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 .