capset

CAPGET(2)                 Manuel du programmeur Linux                CAPGET(2)



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



Linux 2.6.6                      21 juin 2004                        CAPGET(2)