我试图让 Kerberos PAM 提取票证,而不是在 CentOS 7 上的 RStudio 登录后销毁它。
我的rstudio
文件/etc/pam.d/
看起来像:
#%PAM-1.0
auth required pam_krb5.so retain_after_close debug
session requisite pam_krb5.so retain_after_close debug
account required pam_krb5.so debug
我知道 RStudio 与 PAM 堆栈通信良好,因为如果我删除第一行,RStudio 将无法登录。我还进行了其他操作,让我知道两者是同步的。
根据 RStudio 文档,如果我运行命令: pamtester --verbose rstudio <user> authenticate setcred open_session
输入密码后,会在/tmp
调用中创建一张票证krb5cc_(uid)
,这正是我所期望的。我可以通过删除setcred
告诉我这是关键组件的标志来使上面的 pamtester 行无法拉票。
查看 Keberos PAM 文档后发现,它的session
执行效果与命令标志相同,auth
但它使用命令pam_setcred(PAM_ESTABLISH_CRED)
标志运行,这正是我想要的。同一文档说,如果我添加retain_after_close
,则应保留票证。然而,这并没有发生,我什至不确定它是否真的在拉票。
感谢任何帮助,我已经尝试了 PAM 文件中几乎所有标志和参数的组合,但没有成功。 Kerberos 是一场噩梦。 LMK 我还能添加什么来帮助。不幸的是,日志文件没有用处,因为如果一行不被理解,PAM 会“默默地失败”,因此它们不会记录错误。
答案1
CentOS 的 pam_krb5 不支持retain_after_close。
答案2
我几乎逐字逐句地回答了同样的问题。结果是rstudio-server
运行 Web 服务器的用户没有对/etc
.
创建票证后,用户尝试写入该目录但无法写入。
测试仪工作正常,因为它是以提升的权限运行的。
答案3
伙计们,我刚刚意识到我已经弄清楚了这一点,但从未发布答案。简而言之,我要做的就是下载 MIT Kerberos 代码(用 C++ 编写,也称为 Black Magic)并找到将 kerberos 票证写到 /tmp 目录的代码部分,然后更改代码,以便它没有将 6 个随机字符添加到 Kerberos 票证的末尾,也没有注释掉任何涉及删除或销毁票证的部分。
我必须编译成共享库(pam_krb5.so 文件)并将修改后的代码放入我的 docker 容器中。然后它就起作用了。不幸的是,我不再参与该项目,也无法访问代码。真希望我把它放到我的 git 中。
附带说明一下,RStudio 的付费版本支持此罚款。如果您想使用免费版本,则必须执行此操作。如果您需要帮助查找代码中需要修改的区域,请联系我。