Man page - add_key(2)

Packages contains this manual

Available languages:

en fr ja ru

Manual

add_key

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
Types de clé
VALEUR RENVOYÉE
ERREURS
STANDARDS
HISTORIQUE
NOTES
EXEMPLES
Source du programme
VOIR AUSSI
TRADUCTION

NOM

add_key - Ajouter une clé au gestionnaire de clés du noyau

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <keyutils.h>

key_serial_t add_key(const char * type , const char * description ,
const void
payload [. plen ], size_t plen ,
key_serial_t
keyring );

Note : il n’existe pas d’enveloppe pour cet appel systùme dans la glibc ; voir NOTES.

DESCRIPTION

add_key () crĂ©e ou met Ă  jour une clĂ© ayant un type et une description donnĂ©s, l’instancie avec une charge utile ( payload ) de longueur plen , l’attache au trousseau ( keyring ) spĂ©cifiĂ©, et renvoie son numĂ©ro de sĂ©rie.

La clĂ© peut ĂȘtre rejetĂ©e si les donnĂ©es fournies sont dans un mauvais format ou si elles sont non valables de toute autre façon.

Si le trousseau ( keyring ) de destination contient dĂ©jĂ  une clĂ© avec ce type et cette description , alors, si le type de la clĂ© le permet, cette clĂ© sera mise Ă  jour au lieu de crĂ©er une nouvelle clĂ©. Dans le cas contraire, une nouvelle clĂ© sera créée, et le trousseau sera mis Ă  jour pour remplacer le lien vers l’ancienne clĂ© par un lien vers la nouvelle.

Le numĂ©ro de sĂ©rie du trousseau de destination peut ĂȘtre celui d’un trousseau valable sur lequel l’appelant a le droit d’écriture. Il peut aussi ĂȘtre un des identifiants spĂ©ciaux suivants :
KEY_SPEC_THREAD_KEYRING

Cela spĂ©cifie le trousseau spĂ©cifique aux processus lĂ©gers ( thread-keyring (7)) de l’appelant.

KEY_SPEC_PROCESS_KEYRING

Cela spĂ©cifie le trousseau spĂ©cifique aux processus de l’appelant ( process-keyring (7)).

KEY_SPEC_SESSION_KEYRING

Cela spĂ©cifie le trousseau spĂ©cifique Ă  la session de l’appelant ( session-keyring (7)).

KEY_SPEC_USER_KEYRING

Cela spĂ©cifie le trousseau spĂ©cifique Ă  l’UID de l’appelant ( user-keyring (7)).

KEY_SPEC_USER_SESSION_KEYRING

Cela spĂ©cifie le trousseau spĂ©cifique Ă  la session de l’UID de l’appelant ( user-session-keyring (7)).

Types de clé

Le type de clĂ© est une chaĂźne qui indique le type de la clĂ©. En interne, le noyau dĂ©finit un certain nombre de types de clĂ© disponibles au cƓur du systĂšme de gestion des clĂ©s. Parmi les types disponibles pour l’utilisateur que vous pouvez spĂ©cifier comme paramĂštre type de add_key (), se trouvent :
"keyring"

Les trousseaux ( keyring ) sont des types de clĂ© spĂ©ciaux qui peuvent contenir des liens vers des sĂ©quences d’autres clĂ©s de tout type. Si cette interface est utilisĂ©e pour crĂ©er un trousseau, alors l’argument payload doit valoir NULL, et plen doit ĂȘtre zĂ©ro.

"user"

Il s’agit d’un type de clĂ© gĂ©nĂ©raliste dont la charge utile peut ĂȘtre lue et mise Ă  jour par des applications de l’espace utilisateur. La clĂ© est entiĂšrement conservĂ©e dans la mĂ©moire du noyau. La charge utile pour les clĂ©s de ce type est un bloc de donnĂ©es de votre choix jusqu’à 32 767 octets.

"logon" (depuis Linux 3.3)

Ce type de clĂ© est pour l’essentiel le mĂȘme que "user" , mais il ne permet pas de lire la clĂ©. Cela convient pour stocker les charges utiles dont vous ne voulez pas que l’utilisateur puisse lire.

Ce type de clĂ© analyse une description en profondeur pour garantir qu’elle est qualifiĂ©e par le prĂ©fixe d’un « service », en vĂ©rifiant que la description contient un « : » prĂ©cĂ©dĂ© d’autres caractĂšres.
"big_key"
(depuis Linux 3.13)

Ce type de clĂ© est similaire Ă  "user" , mais il peut contenir une charge utile jusqu’à 1 MiO. Si la charge utile de la clĂ© est assez grande, elle peut ĂȘtre stockĂ©e, chiffrĂ©e, dans tmpfs (qui peut ĂȘtre mis sur l’espace d’échange) et non dans la mĂ©moire du noyau.

Pour plus de détails sur ces types de clé, voir keyrings (7).

VALEUR RENVOYÉE

En cas de succĂšs, add_key () renvoie le numĂ©ro de sĂ©rie de la clĂ© créée ou mise Ă  jour. En cas d’erreur, -1 est renvoyĂ© et errno est positionnĂ© pour indiquer l’erreur.

ERREURS

EACCES

Le trousseau n’était pas disponible pour pouvoir ĂȘtre modifiĂ© par l’utilisateur.

EDQUOT

Le quota de clés de cet utilisateur serait dépassé si la clé était créée ou ajoutée au trousseau.

EFAULT

Un ou plusieurs type , description et payload (charge utile) pointent Ă  l’extĂ©rieur de l’espace d’adresses accessible au processus.

EINVAL

La longueur de la chaĂźne (y compris l’octet NULL final) spĂ©cifiĂ© dans type ou description a dĂ©passĂ© la limite (respectivement 32 et 4096 octets).

EINVAL

La charge utile ( payload ) n’est pas valable.

EINVAL

type Ă©tait "logon" et la description n’était pas qualifiĂ©e avec une chaĂźne de prĂ©fixes sous la forme "service:" .

EKEYEXPIRED

Le trousseau a expiré.

EKEYREVOKED

Le trousseau a été révoqué.

ENOKEY

Le trousseau n’existe pas.

ENOMEM

Il n’y a pas assez de mĂ©moire pour crĂ©er une clĂ©.

EPERM

type commençait par un point (« . »). Les types de clĂ© commençant par un point sont rĂ©servĂ©s Ă  l’implĂ©mentation.

EPERM

type valait "keyring" et la description commençait par un point (« . »). Les trousseaux dont les descriptions (noms) commençant par un point sont rĂ©servĂ©s Ă  l’implĂ©mentation.

STANDARDS

Linux.

HISTORIQUE

Linux 2.6.10.

NOTES

Aucune enveloppe n’est fournie pour cet appel systĂšme dans la glibc. Une enveloppe est fournie dans le paquet libkeyutils (le paquet qui l’accompagne fournit le fichier d’en-tĂȘte <keyutils.h> ). Quand vous utilisez l’enveloppe de cette bibliothĂšque, liez-la avec -lkeyutils .

EXEMPLES

Le programme ci-dessous crĂ©e une clĂ© dont le type, la description et la charge utile sont indiquĂ©s dans les paramĂštres de la ligne de commande, puis il lie la clĂ© au trousseau de la session. La session d’interprĂ©teur suivante montre l’utilisation du programme :

$ ./a.out user mykey "Une charge utile"
L’identifiant de la clĂ© est is 64a4dca
$ grep '64a4dca' /proc/keys
064a4dca I--Q--- 1 perm 3f010000 1000 1000 user mykey: 12

Source du programme

#include <keyutils.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(int argc, char *argv[])
{
key_serial_t key;
if (argc != 4) {
fprintf(stderr, "Utilisation : %s type description charge_utile\n",
argv[0]);
exit(EXIT_FAILURE);
}
key = add_key(argv[1], argv[2], argv[3], strlen(argv[3]),
KEY_SPEC_SESSION_KEYRING);
if (key == -1) {
perror("add_key");
exit(EXIT_FAILURE);
}
printf("L’identifiant de la clĂ© est %jx\n", (uintmax_t) key);
exit(EXIT_SUCCESS);
}

VOIR AUSSI

keyctl (1), keyctl (2), request_key (2), keyctl (3), keyrings (7), keyutils (7), persistent-keyring (7), process-keyring (7), session-keyring (7), thread-keyring (7), user-keyring (7), user-session-keyring (7)

Les fichiers Documentation/security/keys/core.rst et Documentation/keys/request-key.rst des sources du noyau (ou, avant Linux 4.13, Documentation/security/keys.txt et Documentation/security/keys-request-key.txt ).

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .