Главная » 2017 » Ноябрь » 17 » man 2 add_key
01:06
man 2 add_key

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


add_key - добавить ключ в систему управления ключами ядра



ОБЗОР


#include <keyutils.h>

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



ОПИСАНИЕ


add_key() указывает ядру создать или обновить ключ заданного типа type с описанием
description, сконструировать экземпляр с дополнительными данными payload и длиной
plen, присоединить его к заданной связке ключей keyring и вернуть его серийный
номер.

В зависимости от типа ключа данные могут быть отклонены, если они представлены в
неправильном формате или возникла другая ошибка.

Если в указываемой связке ключей keyring уже есть ключ с таким же type и
description то, если тип ключа это поддерживает, ключ будет обновлён, а не создан
заново; если нет, то будет создан новый ключ и он вытеснит ссылку на существующий
ключ из связки.

Связка ключей keyring может задаваться серийным номером действующей связки ключей,
для которой у вызывающего процесса есть права на запись, или специальным ID связки
ключей:

KEY_SPEC_THREAD_KEYRING
Задаёт связку ключей нити вызывающего процесса.

KEY_SPEC_PROCESS_KEYRING
Задаёт связку ключей процесса.

KEY_SPEC_SESSION_KEYRING
Задаёт связку ключей сеанса вызывающего процесса.

KEY_SPEC_USER_KEYRING
Задаёт связку ключей по UID вызывающего процесса.

KEY_SPEC_USER_SESSION_KEYRING
Задаёт связку ключей по UID сеанса вызывающего процесса.



ТИПЫ КЛЮЧЕЙ


В ядре кода управления ключами есть несколько типов; они могут указываться в этой
функции:

user Ключи определённых пользователем типов могут содержать двоичный набор
произвольных данных, а в description можно указывать любую произвольную
строку, хотя предпочтительнее, чтобы описание начиналось со строки,
представляющей службу, для которой предназначен ключ, и двоеточие
(например, afs:mykey).

keyring
Связки ключей — это специальный тип ключей, который может содержать ссылки
на цепочки других ключей любого типа. Если данный интерфейс используется
для создания связки ключей, то payload должен быть NULL, а значение plen

EINVAL Неправильные дополнительные данные.

EKEYEXPIRED
Срок службы связки ключей истёк.

EKEYREVOKED
Связка ключей отозвана.

ENOKEY Связка ключей не существует.

ENOMEM Недостаточно памяти для создания ключа.

EDQUOT Квота на ключи для данного пользователя была бы превышена, если бы этот
ключ создался или был бы прицеплен в связку ключей.



КОМПОНОВКА


Хотя это и системный вызов Linux, его нет в libc, но его можно найти в
libkeyutils. При сборке программы компоновщику нужно указать параметр -lkeyutils.



СМОТРИТЕ ТАКЖЕ


keyctl(1), keyctl(2), request_key(2), keyctl(3), keyrings(7)



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 559 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar