2012-03-08 312 views
0

我正在构建一个需要使用Linux组密钥环的应用程序,以便在不同所有者的进程之间共享敏感数据。每当我尝试使用keyctl命令或底层API访问组密钥环(例如“@ g”或“-6”)时,都会出现错误。将Linux内核add_key和keyctl系统调用与组密钥环一起使用

我猜我必须设置某种状态,让它知道我的哪个组要获取密钥环,但关于此内核功能的文档很少。任何人都知道如何让它为团队工作?

方法调用(目前使用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

你能发布你在编辑中遇到的错误吗? – Alex 2012-03-08 05:52:10

回答

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

所以,你的代码是正确的...但它试图使用功能,ISN”还没有。