在 sudo 调用中保留 kerberos 票证

Joa*_*ner 6 sudo afs kerberos

在普通的 linux 机器上,当我sudo -s作为普通用户使用时,我变成了 root 但HOME仍然指向~user,所以每个管理员都有自己的环境等(这是没有env_resetalways_set_home设置的)。

在主目录位于 AFS 文件系统上的系统上,如果环境变量KRB5CCNAME被保留,这也有效,因为 root 可以在/tmp.

但是如果我sudo在这样的系统上使用来更改本地非 root 用户(例如特定服务的专用用户),新用户将无法访问 kerberos 缓存(因为它由旧用户拥有并且模式为 600)。但是如果我unset KRB5CCNAME && kinit user && aklog && exec bash,我可以再次访问我的环境。

所以问题是:是否有一种干净的方法让 sudo 获取我之前拥有的 kerberos 票证并将它们添加到新用户的 kerberos 票证缓存中?

小智 2

据我所知,我认为当前的任何 Kerberos PAM 模块都不支持此功能。不过,我可以看到如何实现它;这本身没有什么不可能的。基本上,pam_krb5需要获取代码来打开 current 指向的票证缓存KRB5CCNAME,迭代它,并在初始缓存设置后将找到的每个票证复制到新创建的票证缓存中。

这需要是一个非默认选项,因为您会将您的凭据泄露给目标用户(包括可以成为该用户的任何其他人,这有潜在的危险。

如果您需要立即解决方案,ksu并且不需要sudo. ksu已经支持保留当前的 ​​Kerberos 票证缓存(至少在 MIT Kerberos 版本中)。