在普通的linux机器上,当我sudo -s
作为普通用户使用时,我成为root但HOME
仍然指向~user
,所以每个管理员都有自己的环境等(这是没有env_reset
或always_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 版本中)。