各キーがディスク上のパスに関連付けられているカーネルにいくつかの暗号キーを保存する必要があります。制限されたユーザーのセットは、そのようなパスでファイルを作成できますが、暗号鍵はそのようなすべてのユーザーによって共有されます。プロジェクトに Linux カーネル キー管理機能を使用することを考えています。キーとカーネル モジュールを管理するユーザーモード アプリケーションがあります。ただし、 add_key インターフェイスは明確ではありません。誰でもアクセスできるグローバル キーリングを作成するにはどうすればよいですか? add_key の man ページには、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 を使用して、カーネルに独自の「タイプ」を登録する必要がある場合があることを理解しています。ただし、キーリング パラメーターにどの値を渡す必要があるのか わかりません。また、権限を割り当てる際の所有者とはどういう意味ですか?