NOM¶
request_key - Demander une clé au gestionnaire de clés du noyau
SYNOPSIS¶
#include <keyutils.h>
key_serial_t request_key(const char *type, const char *description,
const char *callout_info,
key_serial_t keyring);
DESCRIPTION¶
request_key() demande au noyau de trouver une clé d'un
type
donné, qui correspond à la
description spécifiée,
et si une clé est trouvée, l'attache au trousseau (
keyring)
donné en argument et renvoie son numéro de série.
request_key() cherche une clé correspondant aux critères
d'abord récursivement à l'intérieur des trousseaux
attachés au processus appelant, dans l'ordre suivant : trousseau
spécifique au processus léger (
thread), trousseau
spécifique au processus, et enfin le trousseau de session.
Si
request_key() est appelé depuis un programme lui-même
appelé par
request_key() au nom d'un autre processus afin de
générer une clé, alors les trousseaux de cet autre processus
seront ensuite parcourus, l'accès étant contrôlé par les
attributs UID, GID, les groupes et le contexte de sécurité de cet
autre processus.
Une correspondance est d'abord recherchée avec toutes les clés d'un
trousseau avant de chercher dans les trousseaux trouvés dans ce
trousseau. Seules les clés qui sont accessibles à l'appelant peuvent
être trouvées, et de même seuls les trousseaux qui lui sont
accessibles peuvent être parcourus.
Si aucune clé n'est trouvée, et si
callout_info possède
une valeur non NULL, cette fonction va essayer de chercher plus loin. Dans un
tel cas, l'argument
callout_info est passé à un service de
l'espace utilisateur, tel que
/sbin/request-key, pour générer
la clé.
Si cela échoue aussi, alors une erreur est renvoyée, et une clé
temporaire négative est insérée dans le trousseau
spécifié. Cette clé expirera au bout de quelques secondes, mais
en attendant, tous les appels ultérieurs à
request_key() avec
les mêmes arguments échouera.
Le numéro de série
keyring peut être celui d'un trousseau
valide sur lequel l'appelant possède les droits en écriture, ou il
peut être un identifiant de trousseau spécial :
- KEY_SPEC_THREAD_KEYRING
- Pour indiquer le trousseau spécifique au processus
léger ( thread) de l'appelant.
- KEY_SPEC_PROCESS_KEYRING
- Pour indiquer le trousseau spécifique au processus de
l'appelant.
- KEY_SPEC_SESSION_KEYRING
- Pour indiquer le trousseau spécifique à la
session de l'appelant.
- KEY_SPEC_USER_KEYRING
- Pour indiquer le trousseau spécifique à l'UID de
l'appelant.
- KEY_SPEC_USER_SESSION_KEYRING
- Pour indiquer le trousseau spécifique à la
session de l'UID de l'appelant.
Si une clé est créée, qu'elle soit valide ou négative, elle
remplacera toute autre clé possédant le même type et la
même description dans le trousseau destination.
VALEUR RENVOYÉE¶
En cas de succès,
request_key() renvoie le numéro de série
de la clé trouvée. En cas d'erreur, la valeur
-1 est
renvoyée et
errno contient un code d'erreur approprié.
ERREURS¶
- EACCES
- Le trousseau n'était pas disponible pour pouvoir
être modifié par l'utilisateur.
- EINTR
- La requête a été interrompue par un
signal.
- EDQUOT
- Le quota de clés de cet utilisateur serait
dépassé si la clé était créée ou
ajoutée au trousseau.
- EKEYEXPIRED
- Une clé expirée a été trouvée,
mais aucun remplacement n'a pu être obtenu.
- EKEYREJECTED
- La tentative de générer une nouvelle clé a
été rejetée.
- EKEYREVOKED
- Une clé révoquée a été
trouvée, mais aucun remplacement n'a pu être obtenu.
- ENOMEM
- Il n'y a pas assez de mémoire pour créer une
clé.
- ENOKEY
- Aucune clé correspondante n'a été
trouvée.
ÉDITION DE LIENS¶
Bien qu'il s'agisse d'un appel système Linux, cette fonction n'est pas
présente dans
libc, mais peut être trouvée dans
libkeyutils. L'édition des liens doit être être
effectuée avec l'option
-lkeyutils.
VOIR AUSSI¶
keyctl(1),
add_key(2),
keyctl(2),
request-key(8)
COLOPHON¶
Cette page fait partie de la publication 3.44 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¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Denis Barbier (2010).
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> ».