NOM
prctl - Opérations sur un processus
SYNOPSIS
#include <sys/prctl.h>
int prctl(int option, unsigned long arg2, unsigned long arg3,
unsigned long arg4, unsigned long arg5);
prctl() est invoqué avec un premier paramètre indiquant ce qu’il faut
faire, (ses valeurs sont définies dans <linux/prctl.h>), et des
paramètres supplémentaires dont la signification dépend du premier
paramètre. Celui-ci peut être :
PR_CAPBSET_READ (depuis Linux 2.6.25)
Renvoyer (en résultat de fonction) 1 si la capacité indiquée par
arg2 est présente dans la limitation de capacités du thread
appelant ou 0 si elle ne l’est pas. Les constantes des capacités
sont définies dans <linux/capability.h>. L’ensemble des
capacités liées contrôle si le processus peut recevoir la
capacité par un ensemble de capacités autorisées pour un fichier
lors d’un appel futur à execve(2).
Si la capacité indiquée dans arg2 n’est pas valable, alors
l’appel échoue avec l’erreur EINVAL.
PR_CAPBSET_DROP (depuis Linux 2.6.25)
Si le thread appelant a la capacité CAP_SETPCAP, alors enlever
la capacité indiquée par arg2 dans l’ensemble de limitation de
capacités du thread appelant. Les fils du thread appelant
hériteront de cette nouvelle limitation de capacités réduite.
L’appel échoue avec l’erreur EPERM si le thread appelant n’a pas
la capacité CAP_SETPCAP ; ou avec l’erreur EINVAL si arg2 ne
représente pas une capacité correcte ; ou avec l’erreur EINVAL
si les capacités de fichier ne sont pas activée dans le noyau,
auquel cas les limitations ne sont pas prises en charge par le
noyau.
PR_SET_DUMPABLE (depuis Linux 2.3.20)
Fixer l’attribut déterminant si un fichier core est produit
lorsque le processus reçoit un signal dont le comportement par
défaut est de produire un fichier core. (Normalement cet
attribut est validé pour un processus par défaut, mais est
effacé à l’exécution d’un programme Set-UID ou Set-GID ainsi que
par divers appels système manipulant des UID et GID). Dans les
noyaux jusqu’à 2.6.12 inclus, arg2 doit valoir 0 (pas de fichier
core) ou 1 (fichier core possible). Entre les noyaux 2.6.13 et
2.6.17, la valeur 2 était également autorisée ; elle permettait
à un binaire qui ne produirait normalement pas de fichier core
d’en créer un uniquement lisible par root ; cette fonctionnalité
a été supprimée pour des raisons de sécurité. (Voir aussi la
description de /proc/sys/fs/suid_dumpable dans proc(5).)
PR_GET_DUMPABLE (depuis Linux 2.3.20)
Renvoyer (en résultat de fonction) l’état actuel de l’attribut
de création de fichier core du processus appelant.
PR_SET_ENDIAN (depuis Linux 2.6.18, seulement sur PowerPC)
Fixer le boutisme (endianness) du processus appelant à la valeur
donnée dans arg2, qui doit être l’une des valeurs suivantes :
PR_ENDIAN_BIG, PR_ENDIAN_LITTLE, ou PR_ENDIAN_PPC_LITTLE
(PowerPC pseudo petit boutiste).
PR_GET_ENDIAN (depuis Linux 2.6.18, seulement sur PowerPC)
Renvoyer le boutisme (endianness) du processus appelant, dans
l’emplacement pointé par (int *) arg2.
PR_SET_FPEMU (depuis Linux 2.4.18, 2.5.9, seulement sur ia64)
Fixer les bits de contrôle de l’émulation de FPU à arg2. Passer
PR_FPEMU_NOPRINT pour émuler silencieusement les opérations
flottantes, ou PR_FPEMU_SIGFPE pour ne pas émuler les opérations
flottantes, et envoyer SIGFPE.
PR_GET_FPEMU (depuis Linux 2.4.18, 2.5.9, seulement sur ia64)
Renvoyer les bits de contrôle de l’émulation de FPU, dans
l’emplacement pointé par (int *) arg2.
PR_SET_FPEXC (depuis Linux 2.4.21, 2.5.32, seulement sur PowerPC)
Fixer le mode d’exception flottante à arg2. Passer la valeur
PR_FP_EXC_SW_ENABLE pour utiliser FPEXC pour activer les
exceptions flottantes, PR_FP_EXC_DIV pour les divisions
flottantes par zéro, PR_FP_EXC_OVF pour les dépassements de
capacité vers le haut, PR_FP_EXC_UND pour les dépassements de
capacité vers le bas, PR_FP_EXC_RES pour les résultats flottants
inexacts, PR_FP_EXC_INV pour les opérations flottantes
invalides, PR_FP_EXC_DISABLED pour désactiver les exceptions
flottantes, PR_FP_EXC_NONRECOV pour le mode d’exceptions
asynchrone non récupérable, PR_FP_EXC_ASYNC pour le mode
d’exceptions asynchrone récupérable, PR_FP_EXC_PRECISE pour le
mode d’exception précis.
PR_GET_FPEXC (depuis Linux 2.4.21, 2.5.32, seulement sur PowerPC)
Renvoyer le mode d’exception flottante, dans l’emplacement
pointé par (int *) arg2.
PR_SET_KEEPCAPS (depuis Linux 2.2.18)
Fixer l’état de l’attribut de conservation des capacités du
thread, qui détermine si les ensembles de capacités effectives
et disponibles sont effacés lorsqu’on modifie les UID réel,
effectif et sauvé du thread de manière à ce que tous soient non
nuls alors qu’auparavant l’un au moins était nul. (Par défaut
les ensembles sont effacés). arg2 doit valoir 0 (les capacités
sont effacées) ou 1 (capacités conservées). Cette valeur est
remise à zéro pour les appels ultérieurs à execve(2).
PR_GET_KEEPCAPS (depuis Linux 2.2.18)
Renvoyer (en résultat de fonction) l’état actuel de l’attribut
de conservation des capacités du thread appelant.
PR_SET_NAME (depuis Linux 2.6.9)
Fixer le nom du processus appelant, en utilisant la valeur de
l’emplacement pointé par (char *) arg2. Le nom peut avoir
jusqu’à 16 octets de long et doit être terminé par un caractère
nul s’il est plus petit.
PR_GET_NAME (depuis Linux 2.6.11)
Renvoyer le nom du processus appelant, dans le tampon pointé par
(char *) arg2. Le tampon doit être suffisamment grand pour
contenir jusqu’à 16 octets ; la chaîne sera terminée par un
caractère nul si elle est plus petite.
PR_SET_PDEATHSIG (depuis Linux 2.1.57)
Configurer le signal de mort du père du processus appelant avec
la valeur arg2 (qui peut être un numéro de signal dans
l’intervalle 1..maxsig, ou être nul pour effacer le signal). Il
s’agit du numéro du signal que le processus appelant recevra si
son père se termine. Cette valeur est effacée pour le fils d’un
fork(2).
PR_GET_PDEATHSIG (depuis Linux 2.3.15)
Renvoyer la valeur actuelle du signal de mort du processus père,
dans l’emplacement pointé par (int *) arg2.
PR_SET_SECCOMP (depuis Linux 2.6.23)
Configurer le mode de traitement sécurisé pour le thread
appelant. Dans l’implémentation actuelle, arg2 doit valoir 1.
Quand le mode de traitement sécurisé a été mis à 1, les seuls
appels système permis pour le thread sont read(2), write(2),
_exit(2) et sigreturn(2). Les autres appels système provoque la
réception d’un signal SIGKILL. Le mode de traitement sécurisé
est utile pour les applications de traitement numérique qui
peuvent avoir besoin d’exécuter des instructions ne provenant
pas d’une source de confiance, lues à partir d’un tuyau
(« pipe ») ou d’une socket. Cette opération n’est disponible que
si le noyau a été configuré avec l’option CONFIG_SECCOMP
activée.
PR_GET_SECCOMP (depuis Linux 2.6.23)
Renvoyer le mode de traitement sécurisé du thread appelant. Ce
n’est pas très utile avec l’implémentation actuelle (le mode
vaut toujours 1), mais pourrait être utile dans le future pour
d’autres modes : si l’appelant n’est pas dans un mode de
traitement sécurisé, cette opération renvoie 0 ; si l’appelant
est dans le mode de traitement sécurisé, alors l’appel prctl()
provoquera l’envoie d’un signal SIGKILL au processus. Cette
opération n’est disponible que si le noyau a été configuré avec
l’option CONFIG_SECCOMP activée.
PR_SET_SECUREBITS (depuis Linux 2.6.26)
Configurer l’attribut « securebits » du thread appelant à la
valeur fournie par arg2. Voir capabilities(7).
PR_GET_SECUREBITS (depuis Linux 2.6.26)
Renvoyer (en résultat de fonction) l’état actuel de l’attribut
« securebits » du thread appelant. Voir capabilities(7).
PR_SET_TIMING (depuis Linux 2.6.0-test4)
Permet de choisir la méthode de mesure du temps du processus à
utiliser, en passant dans arg2 soit PR_TIMING_STATISTICAL
(méthode statistique traditionnelle) ou PR_TIMING_TIMESTAMP
(méthode exacte utilisant des horodatages). PR_TIMING_TIMESTAMP
n’est pas implémenté pour l’instant (l’utilisation de ce mode
renverra l’erreur EINVAL).
PR_GET_TIMING (depuis Linux 2.6.0-test4)
Renvoyer (en résultat de fonction) quelle méthode de mesure du
temps du processus est utilisée actuellement.
PR_SET_TSC (depuis Linux 2.6.26, seulement sur x86)
Configurer l’état de l’attribut qui indique si le compteur
d’horodatage peut être lu par le processus. Utilisez
PR_TSC_ENABLE pour arg2 permet d’autoriser les lectures ou
PR_TSC_SIGSEGV pour produire un SIGSEGV quand le processus
essaie de lire le compteur d’horodatage.
PR_GET_TSC (depuis Linux 2.6.26, seulement sur x86)
Renvoyer, dans l’emplacement pointé par (int *) arg2, l’état de
l’attribut qui indique si le compteur d’horodatage peut être lu.
PR_SET_UNALIGN
(Seulement sur : ia64, depuis Linux 2.3.48 ; parisc, depuis
Linux 2.6.15 ; PowerPC, depuis Linux 2.6.18 ; Alpha, depuis
Linux 2.6.22) Fixer les bits de contrôle pour les accès non
alignés à arg2. La valeur PR_UNALIGN_NOPRINT signifie que les
accès non alignés en espace utilisateurs sont silencieusement
corrigés, et PR_UNALIGN_SIGBUS cause l’envoi de SIGBUS lors d’un
accès non aligné.
PR_GET_UNALIGN
(Voir PR_SET_UNALIGN pour les informations sur les versions et
les architectures) Renvoyer les bits de contrôle des accès non
alignés, dans l’emplacement pointé par (int *) arg2.
VALEUR RENVOYÉE
En cas de réussite, PR_GET_DUMPABLE, PR_GET_KEEPCAPS, PR_CAPBSET_READ,
PR_GET_TIMING, PR_GET_SECUREBITS et (si elle rend la main)
PR_GET_SECCOMP renvoient les valeurs positives décrites ci-dessus.
Toute autre valeur d’option renvoie 0en cas de réussite. En cas
d’échec, -1 est renvoyé et errno contient le code d’erreur.
ERREURS
EFAULT arg2 est une adresse non valable.
EINVAL La valeur de option n’est pas reconnue.
EINVAL arg2 n’est pas une valeur valable pour cette option.
EINVAL option vaut PR_SET_SECCOMP ou PR_SET_SECCOMP et le noyau n’a pas
été configuré avec CONFIG_SECCOMP.
EPERM option vaut PR_SET_SECUREBITS et l’appelant n’a pas la capacité
CAP_SETPCAP ou a essayé d’enlever un attribut de
« verrouillage » ou a essayer de positionner un attribut pour
lequel l’attribut de verrouillage était positionné (voir
capabilities(7)).
EPERM option vaut PR_SET_KEEPCAPS et l’attribut
SECURE_KEEP_CAPS_LOCKED de l’appelant est positionné (voir
capabilities(7)).
EPERM option vaut PR_CAPBSET_DROP et l’appelant n’a pas la capacité
CAP_SETPCAP.
VERSIONS
L’appel système prctl() a été introduit dans Linux 2.1.57.
CONFORMITÉ
Cet appel système est spécifique à Linux. IRIX dispose d’un appel
système prctl() (également introduit dans Linux 2.1.44 sur
l’architecture MIPS sous le nom irix_prctl), dont le prototype est
ptrdiff_t prctl(int option, int arg2, int arg3);
et les options permettent de d’obtenir le nombre maximum de processus
par utilisateur, le nombre maximal de processeurs utilisables par un
processus, vérifier si un processus est bloqué, lire ou fixer la taille
des piles,...
VOIR AUSSI
signal(2), core(5)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».