在 sudo 调用中保留 kerberos 票证

在 sudo 调用中保留 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 票证缓存中?

答案1

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

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

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

相关内容