我试图让 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 会“静默失败”,因此它们不会记录错误。
CentOS 的 pam_krb5 不支持 retain_after_close。
我几乎逐字逐句地谈论同样的问题。结果
rstudio-server
是运行 Web 服务器的用户没有对/etc
.创建票证时,用户正在尝试写入该目录并且无法写入。
测试仪工作正常,因为它以提升的权限运行。
伙计们,我刚刚意识到我已经弄清楚了,但从未发布过答案。简而言之,我要做的是下载 MIT Kerberos 代码(它是用 C++ 编写的,也称为 Black Magic)并找到将 kerberos 票证写入 /tmp 目录的代码部分并更改代码,以便它没有将 6 个随机字符添加到 Kerberos 票证的末尾,并注释掉任何处理删除或销毁票证的部分。
我必须编译成一个共享库(pam_krb5.so 文件)并将修改后的代码放入我的 docker 容器中。然后它起作用了。不幸的是,我不再从事该项目,也无权访问代码。真希望我把它放在我的 git 中。
附带说明,RStudio 的付费版本支持此罚款。如果您想使用免费版本,您必须这样做。如果您需要帮助查找代码中要修改的区域,请联系我。