我的 kerberos 缓存中有一些主体:
$ klist
Ticket cache: FILE:/tmp/krb5cc_1234
Default principal: [email protected]
Valid starting Expires Service principal
04/21/2024 23:51:59 04/22/2024 02:37:58 krbtgt/[email protected]
renew until 04/22/2024 23:51:46
04/21/2024 23:51:57 04/22/2024 02:37:58 HTTP/[email protected]
renew until 04/22/2024 23:51:46
我想删除一个条目(本例中为
HTTP/[email protected]
),同时保留其他所有内容。我尝试过,但失败了:
$ kdestroy -p HTTP/[email protected]
kdestroy: Matching credential not found while finding cache for HTTP/[email protected]
我该怎么办?
由于您的“krbtgt”票证是可续订的,最简单的方法是使用以下方式续订:
kinit -R
这会产生丢弃所有其他服务票据的副作用(通常没有必要保留其余的,因为它们将使用 TGT 重新获取)。
除此之外,MIT Kerberos 没有任何命令行工具来对票证缓存的内容进行精确编辑 - 它有
krb5_cc_remove_cred()
API,但没有方便的方法来使用它(python-pykrb5 有部分krb5_cc_*() API,但还不是这个特定的 API)。 Heimdal Kerberos 确实有 kcpytkt
,它允许手动将票据一张一张复制到新的缓存中。
(一个解析基于文件的 ccache 并重写的自定义程序,编写起来相当简单(它是一个小标头和一系列记录),但目前我只有一个方便的 keytab 解析器;没有一个用于票证缓存的解析器.)