Man page - execveat(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

execveat

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

NOM

execveat - ExĂ©cuter un programme relatif au descripteur de fichier d’un rĂ©pertoire

BIBLIOTHÈQUE

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

SYNOPSIS

#include <linux/fcntl.h> /* Définition des constantes AT_* */
#include <unistd.h>

int execveat(int dirfd , const char * pathname ,
char *const _Nullable
argv [],
char *const _Nullable
envp [],
int
flags );

DESCRIPTION

L’appel systĂšme execveat () exĂ©cute le programme auquel renvoient dirfd et pathname . Il opĂšre exactement de la mĂȘme maniĂšre que execve (2), exceptĂ© les diffĂ©rences dĂ©crites dans cette page de manuel.

Si le nom de chemin fourni dans pathname est relatif, il est interprété relativement au répertoire référencé par le descripteur de fichier dirfd (plutÎt que relativement au répertoire de travail courant du processus appelant, comme cela est fait par execve (2) pour un chemin relatif).

Si pathname est relatif et que dirfd est la valeur spéciale AT_FDCWD , pathname est interprété relativement au répertoire de travail courant du processus appelant (comme avec execve (2)).

Si pathname est absolu, alors dirfd est ignoré.

Si pathname est une chaßne vide et si le drapeau AT_EMPTY_PATH est indiqué, le descripteur de fichier dirfd spécifie le fichier à exécuter (c-est-à-dire que dirfd renvoie à un fichier exécutable et non à un répertoire).

L’argument flags est un masque de bit qui peut comprendre zĂ©ro ou plusieurs des drapeaux suivants :
AT_EMPTY_PATH

Si pathname est une chaĂźne vide, opĂ©rer sur le fichier auquel renvoie dirfd (qu’on peut obtenir en utilisant le drapeau O_PATH de open (2)).

AT_SYMLINK_NOFOLLOW

Si le fichier identifiĂ© par dirfd est un pathname non NULL est un lien symbolique, l’appel Ă©choue avec l’erreur ELOOP .

VALEUR RENVOYÉE

En cas de rĂ©ussite, execveat () ne renvoie rien. En cas d’échec il renvoie -1 et errno est positionnĂ© pour indiquer l’erreur.

ERREURS

Les mĂȘmes erreurs qui apparaissent pour execve (2) peuvent apparaĂźtre pour execveat (2). Les erreurs supplĂ©mentaires suivantes peuvent Ă©galement se produire pour execveat (2) :
pathname

est relatif mais dirfd n’est ni AT_FDCWD , ni un descripteur de fichier valable.

EINVAL

flags contient un attribut non valable.

ELOOP

flags comprend AT_SYMLINK_NOFOLLOW et le fichier identifié par dirfd et un pathname non NULL est un lien symbolique.

ENOENT

Le programme identifiĂ© par dirfd et pathname exige d’utiliser un interprĂ©teur (tel qu’un script qui commence par « #! », mais le descripteur de fichier dirfd a Ă©tĂ© ouvert avec le drapeau O_CLOEXEC , d’oĂč il s’en suit que le fichier du programme est inaccessible Ă  l’interprĂ©teur lancĂ©. Voir BOGUES.

ENOTDIR

pathname est relatif et dirfd est un descripteur de fichier faisant rĂ©fĂ©rence Ă  un fichier qui n’est pas un dossier.

STANDARDS

Linux.

HISTORIQUE

Linux 3.19, glibc 2.34.

NOTES

Outre les raisons expliquĂ©es dans openat (2), l’appel systĂšme execveat () est Ă©galement nĂ©cessaire pour permettre Ă  fexecve (3) d’ĂȘtre implĂ©mentĂ© sur des systĂšmes oĂč aucun systĂšme de fichiers /proc n’est montĂ©.

Si on lui demande d’exĂ©cuter un fichier script, argv[0] qui est passĂ© Ă  l’interprĂ©teur de script est une chaĂźne sous la forme /dev/fd/N ou /dev/fd/N/P , oĂč N est le numĂ©ro du descripteur de fichier passĂ© via l’argument dirfd . Une chaĂźne sous la premiĂšre forme apparaĂźt quand AT_EMPTY_PATH est utilisĂ©. Une chaĂźne sous la deuxiĂšme forme apparaĂźt quand le script est indiquĂ© via dirfd et pathname ; dans ce cas, P est la valeur donnĂ©e Ă  pathname .

Pour les mĂȘmes raisons dĂ©crites dans fexecve (3), l’usage naturel quand on utilise execveat () est de positionner l’attribut close-on-exec sur dirfd (mais voir BOGUES).

BOGUES

L’erreur ENOENT dĂ©crite ci-dessus signifie qu’il n’est pas possible de positionner l’attribut close-on-exec sur le descripteur de fichier donnĂ© Ă  l’appel sous la forme :

execveat(fd, "", argv, envp, AT_EMPTY_PATH);

Cependant, l’impossibilitĂ© de positionner l’attribut close-on-exec signifie qu’un descripteur de fichier renvoyant Ă  un script a une fuite via le script lui-mĂȘme. Outre qu’elle gaspille le descripteur de fichier, cette fuite peut l’épuiser dans des scĂ©nari oĂč les scripts utilisent execveat () de maniĂšre rĂ©cursive.

VOIR AUSSI

execve (2), openat (2), fexecve (3)

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 Jean-Philippe MENGUAL <jpmengual@debian.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 .