我正在构建一个需要使用Linux组密钥环的应用程序,以便在具有不同所有者的进程之间共享一些敏感数据。每当我尝试使用keyctl命令或底层API访问组密钥环(例如“@ g”或“-6”)时,我都会收到错误。
我猜我必须设置某种状态才能让它知道哪些组可以获取密钥环,但是有关此内核功能的文档很少。有谁知道如何使它适用于团体?
方法调用(目前使用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
答案 0 :(得分:1)
基于查看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
所以你的代码是正确的......但它正在尝试使用尚未存在的功能。