PERSISTENT-KEYRING - Linux手册页
Linux程序员手册 第7部分
更新日期: 2020-08-13
名称
持久密钥-每个用户的持久密钥
说明
持久密钥环是用于代表用户锚定密钥的密钥环。内核处理的每个UID都有自己的持久密钥环,该密钥环在该UID拥有的所有线程之间共享。持久密钥环具有_persistent形式的名称(描述)。其中是相应用户的用户ID。
即使具有适当UID的进程也可能无法直接访问持久密钥环。相反,它必须首先链接到流程的一个密钥环,然后该密钥环才能凭借其拥有者许可访问持久密钥环。该链接是通过keyctl_get_persistent(3)函数完成的。
如果通过keyctl_get_persistent(3)操作对其进行访问时不存在持久密钥环,则将自动创建该密钥环。
每次执行keyctl_get_persistent(3)操作时,永久密钥的到期计时器都将重置为以下值:
/ proc / sys /内核/密钥/ persistent_keyring_expiry
如果达到超时,则将删除持久密钥环,然后将其固定的所有内容进行垃圾回收。然后,在随后对keyctl_get_persistent(3)的调用中将重新创建密钥。
request_key(2)不能直接搜索持久密钥环;仅当它链接到由request_key(2)搜索的密钥环之一时,才搜索它。
持久密钥环独立于clone(2),fork(2),vfork(2),execve(2)和_exit(2)。它会一直持续到其到期计时器触发为止,此时将对其进行垃圾回收。这允许持久密钥环在相应UID的内核记录的生命周期之外保留密钥(其破坏导致user-keyring(7)和user-session-keyring(7)的破坏)。因此,持久密钥环可用于为无需用户交互而运行的进程(例如由cron(8)启动的程序)保存身份验证令牌。
持久密钥环用于存储本身具有有限生存期的UID特定对象(例如kerberos令牌)。如果停止使用这些令牌(即未访问持久密钥环),则持久密钥环的超时可确保自动丢弃相应的对象。
Special operations
keyutils库提供了keyctl_get_persistent(3)函数,用于处理持久密钥环。 (此函数是keyctl(2)KEYCTL_GET_PERSISTENT操作的接口。)此操作允许调用线程获取对应于其自己的UID的持久密钥环,或者,如果该线程具有CAP_SETUID功能,则获取对应于某个其他UID的持久密钥环。在相同的用户名称空间中。
备注
每个用户名称空间都拥有一个名为.persistent_register的密钥环,该密钥环包含指向该名称空间中所有持久密钥的链接。 (在名称空间中为UID 0读取/ proc / keys文件的内容时,可以看到.persistent_register密钥环。)keyctl_get_persistent(3)操作查找名称形式为_persistent的密钥。在该密钥环中,创建密钥(如果密钥不存在),并将其链接到密钥环中。
另外参见
keyctl(1),keyctl(3),keyctl_get_persistent(3),keyrings(7),process-keyring(7),session-keyring(7),thread-keyring(7),user-keyring(7),user-会话密钥(7)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。