Rechercher une page de manuel

Chercher une autre page de manuel:

capset

Autres langues

Langue: fr

Version: 21 juin 2004 (ubuntu - 01/11/07)

Section: 2 (Appels système)

NOM

capget, capset - Configurer les capacités

SYNOPSIS

#undef _POSIX_SOURCE
#include <sys/capability.h>

int capget(cap_user_header_t p_entête, cap_user_data_t p_données);

int capset(cap_user_header_t p_entête, const cap_user_data_t données);

DESCRIPTION

Depuis Linux 2.2, la toute puissance du superutilisateur (root) a été scindée en plusieurs ensembles distincts. Chaque thread dispose d'un ensemble de capacités effectives permettant d'identifier ses droits de réaliser certaines actions. Chaque thread a aussi un ensemble de capacités héritables, qu'il peut transmettre au travers d'un execve(2) et un ensemble de capacités éventuelles qu'il peut rendre effectives ou héritables.

Ces deux fonctions constituent l'interface brute du noyau pour configurer ou lire les capacités d'un processus. Non seulement ces appels système sont spécifiques à Linux, mais l'API du noyau est susceptible de changer. L'utilisation de ces fonctions (en particulier le format du type cap_user_*_t) risque de varier lors de nouvelles mises à jour du noyau.

L'interface portable est constituée des fonctions cap_set_proc(3) et cap_get_proc(3) ; si possible, utilisez plutôt ces routines dans vos applications. Si vous désirez vraiment utiliser les extensions Linux, essayez d'employer plutôt les interfaces plus simples capsetp(3) et capgetp(3).

Détails actuels

Maintenant que vous avez été avertis, quelques détails du noyau actuel. Les structures sont définies comme suit.
 #define _LINUX_CAPABILITY_VERSION  0x19980330
 
 typedef struct __user_cap_header_struct {
     int version;
     int pid;
 } *cap_user_header_t;
 
 typedef struct __user_cap_data_struct {
     int effective;
     int permitted;
     int inheritable;
 } *cap_user_data_t;
 

Les appels retourneront EINVAL, et écriront _LINUX_CAPABILITY_VERSION dans le champ version de p_entête lorsqu'une autre version sera spécifiée.

Ces appels se réfèrent aux capacités du thread indiqué par le champ pid de p_entête lorsqu'il n'est pas nul, ou à celles du thread courant si pid vaut 0. Si pid correspond à un processus n'utilisant pas les threads, pid peut être un identifiant de processus classique. Pour configurer les capacités d'un thread faisant partie d'un processus multithreadé, il faut utiliser un identifiant de thread du type que renvoie gettid(2). Pour capset(), pid peut également être -1, ce qui affecte tous les threads sauf l'appelant et init(8), ou bien une valeur inférieure à -1, ce qui applique la modification à tous les membres de groupe de processus identifié par -pid.
     Pour les détails sur les données, voir capabilities(7).

VALEUR RENVOYÉE

L'appel renvoie 0 quand il réussit, ou -1 s'il échoue, auquel cas errno contient le code d'erreur.

ERREURS

EFAULT
Mauvaise adresse mémoire. Ni p_entête ni p_données ne doivent être NULL.
EINVAL
Un argument est invalide.
EPERM
On a essayé d'ajouter une capacité dans l'ensemble éventuel, ou de placer une capacité dans l'ensemble effectif ou héritable qui ne se trouvait pas dans l'ensemble éventuel.
EPERM
Le processus appelant a tenté d'utiliser capset() pour modifier les capacités d'un thread autre que lui-même, sans avoir les privilèges nécessaires ; la capacité CAP_SETPCAP est requise. (En raison d'un bogue dans les noyaux antérieurs à 2.6.11, cette erreur était aussi renvoyée si un thread sans cette capacité tentait de modifier ses propres capacités en indiquant une valeur non nulle de pid (la valeur renvoyée par getpid(2)).)
ESRCH
Pas de thread correspondant.

CONFORMITÉ

Ces appels système sont spécifiques à Linux.

INFORMATIONS COMPLÉMENTAIRES

L'interface portable pour les fonctions de configuration et de lecture des permissions est fournie par la bibliothèque libcap disponible à :
ftp://ftp.kernel.org/pub/linux/libs/security/linux-privs

VOIR AUSSI

clone(2), gettid(2), capabilities(7)

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> ».

MUOBZLNDSATEGPYWQFIJKCRXHV
-- Flandrin, Patrick