2

我需要在内核中存储一些加密密钥,其中每个密钥都与磁盘上的路径相关。一组受限制的用户可以在这样的路径上创建文件,但加密密钥由所有此类用户共享。我正在考虑为我的项目使用 linux 内核密钥管理工具。我有一个管理密钥和内核模块的用户模式应用程序。但是我不清楚 add_key 接口。如何创建所有人都可以访问的全局密钥环?add_key 的手册页对 add_key 有这样的说法

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

描述

add_key() 要求内核创建或更新给定类型和描述的密钥,使用长度为 plen 的有效负载对其进行实例化,并将其附加到指定的密钥环并返回其序列号。

目标密钥环序列号可能是调用者具有写入权限的有效密钥环序列号,也可能是特殊密钥环 ID:

KEY_SPEC_THREAD_KEYRING 这指定调用者的线程特定密钥环。

KEY_SPEC_PROCESS_KEYRING 这指定调用者的进程特定的密钥环。

KEY_SPEC_SESSION_KEYRING 这指定调用者的会话特定密钥环。

KEY_SPEC_USER_KEYRING 这指定调用者的 UID 特定的密钥环。

KEY_SPEC_USER_SESSION_KEYRING 这指定调用者的 UID 会话密钥环。

我知道我可能需要使用内核中的 register_key_type API 在内核中注册我自己的“类型”。但是我不明白应该将什么值传递给 keyring 参数。另外,所有者在分配权限时是什么意思?

4

0 回答 0