keyctl(2) работа с системой управления ключами ядра

ОБЗОР

#include <keyutils.h>


long keyctl(int cmd, ...);

ОПИСАНИЕ

Вызов keyctl() выполняет несколько функций:
KEYCTL_GET_KEYRING_ID
Запрашивает идентификатор связки ключей.
KEYCTL_JOIN_SESSION_KEYRING
Подсоединяется или запускает именованную сеансовую связку ключей.
KEYCTL_UPDATE
Обновляет ключ.
KEYCTL_REVOKE
Отзывает ключ.
KEYCTL_CHOWN
Назначает владельца ключа.
KEYCTL_SETPERM
Назначает права на ключ.
KEYCTL_DESCRIBE
Описывает ключ.
KEYCTL_CLEAR
Стирает содержимое связки ключей.
KEYCTL_LINK
Цепляет ключ в связку ключей.
KEYCTL_UNLINK
Отцепляет ключ от связки ключей.
KEYCTL_SEARCH
Ищет ключ в связке ключей.
KEYCTL_READ
Читает содержимое ключа или связки ключей.
KEYCTL_INSTANTIATE
Создаёт (Instantiate) частично сконструированный ключ.
KEYCTL_NEGATE
Удаляет (Negate) частично сконструированный ключ.
KEYCTL_SET_REQKEY_KEYRING
Назначает связку ключей request-key по умолчанию.
KEYCTL_SET_TIMEOUT
Назначает время ожидания ключа.
KEYCTL_ASSUME_AUTHORITY
Допускает полномочие создания ключа.

На базе этих операций в libkeyutils созданы отдельные функции, что позволяет проверять типы с помощью компилятора. Обратитесь к разделу Смотрите также ниже.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении keyctl() возвращается серийный номер найденного ключа. В случае ошибки возвращается значение -1, а в errno устанавливается код соответствующей ошибки.

ОШИБКИ

EACCES
Операция с ключом не разрешена.
EDQUOT
Квота на ключи для данного пользователя была бы превышена, если бы этот ключ создался или был бы прицеплен в связку ключей.
EKEYEXPIRED
Найден или указан просроченный ключ.
EKEYREJECTED
Найден или указан отклонённый (rejected) ключ.
EKEYREVOKED
Найден или указан отозванный ключ.
ENOKEY
Искомый ключ не найден или указан неверный ключ.

КОМПОНОВКА

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