Votre IP: 38.107.179.244 
  
 
Google
 
Accueil e-mail Linux
Linux
Perl
Perl
C
Langage C
Dico
Dictionnaire
Biblio liens
Bibliothèque de liens
Index articles
Index articles
 

Date création : 27-03-2008 20:23:44

Linux  Vous êtes dans : GNU/Linux Astuces / Pages man [Section2 - Appels système]


CAPGET

 

Index

  1. NOM
  2. SYNOPSIS
  3. DESCRIPTION
    1. Détails actuels
  4. VALEUR RENVOYÉE
  5. ERREURS
  6. CONFORMITÉ
  7. INFORMATIONS COMPLÉMENTAIRES
  8. VOIR AUSSI
  9. TRADUCTION

 

NOMIndex

capget, capset - Configurer les capacités  

SYNOPSISIndex

#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);  

DESCRIPTIONIndex

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ÉEIndex

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

ERREURSIndex

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ÉIndex

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

INFORMATIONS COMPLÉMENTAIRESIndex

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 AUSSIIndex

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

TRADUCTIONIndex

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.
La traduction de cette page de manuel est basée sur les traductions disponibles sur http://manpagesfr.free.fr/, mais est gérée par l'équipe francophone de traduction de Debian au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».


Création : octobre 2007  © Tous droits réservés 2007 linux-perl-c
Valid HTML 4.01 TransitionalValid CSS