Использование системных вызовов ядра Linux add_key и keyctl с групповым набором ключей - PullRequest
0 голосов
/ 08 марта 2012

Я создаю приложение, которое должно использовать групповое связывание ключей Linux для обмена некоторыми конфиденциальными данными между процессами с разными владельцами.Всякий раз, когда я пытаюсь получить доступ к группе ключей (например, «@g» или «-6»), используя команду keyctl или базовый API, я получаю сообщение об ошибке.

Я предполагаю, что мне нужно установить некоторыесвоего рода состояние, чтобы он знал, для какой из моих групп нужно получить связку ключей, но документация по этой функции ядра редка.Кто-нибудь знает, как заставить его работать для групп?

Вызов метода (в настоящее время используется тип Python ctypes, который будет напрямую вызывать функции совместно используемой библиотеки, что прекрасно работает для всех других ключей):

>>> import ctypes
>>> keyutils = ctypes.CDLL('libkeyutils.so.1')
>>> key_id = 'foo'
>>> key_value = 'bar'
>>> keyutils.add_key('user', key_id, key_value, len(key_value), -5)
268186515
>>> keyutils.add_key('user', key_id, key_value, len(key_value), -6)
-1

1 Ответ

1 голос
/ 08 марта 2012

Если посмотреть на man-страницу для keyctl, то может показаться, что групповые брелки еще не реализованы в ядре.

(*) Group specific keyring: @g or -6

   This is a place holder for a group specific keyring, but is not actually implemented yet in the kernel.

Взглянув на самый последний стабильный источник ядра, он также поддерживаетна странице руководства: http://lxr.linux.no/#linux+v3.2.9/security/keys/process_keys.c#L641

Итак, ваш код верен ... но он пытается использовать функциональность, которой пока нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...