我正在尝试添加一个仅身份验证的 PAM 模块(poldi
,以支持通过 GPG SmartCards 登录)。
我配置的方式对于大多数身份验证用例来说都非常有效:
- 须藤
- 解锁已锁定的屏幕
- 退出后再登录
但是系统重启后登录失败,好像验证成功了,界面变了,但是又回到登录页面,没有任何错误信息。
我尝试将其添加pam_poldi.so
到各种会话文件中,尝试将其放在每次出现之前,pam_unix.so
并添加参数,例如[success=1 default=ignore]
尝试跳过 Unix 身份验证(如果poldi
可以处理)。到目前为止还没有成功,我总是以循环登录行为告终。
再次强调,此配置对于初始登录后的每个身份验证情况都运行良好。
我使用的是 Ubuntu 18.04 的默认安装。
以下是相关部分/etc/pam.d/common-auth
:
auth [success=2 default=ignore] pam_poldi.so
# here are the per-package modules (the "Primary" block)
auth [success=1 default=ignore] pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth required pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth optional pam_ecryptfs.so unwrap
auth optional pam_cap.so
这可能是 PAM 包(libpam-poldi
)本身的错误/限制,但我想更深入地了解 PAM 在 Ubuntu 上的工作原理,以便我可以验证问题所在。
我该如何继续?
更新 1
我确认这是 PAM 配置问题,而不是特定 PAM 模块的限制。我替换了以下行
auth [success=2 default=ignore] pam_poldi.so
和
auth [success=2 default=ignore] pam_permit.so
并观察到相同的循环登录行为,看起来我即将登录,屏幕变黑一两秒钟,然后我回到登录屏幕。
更新 2
该问题似乎具体出在 GDM 的 PAM 配置中,因为我能够在重新启动后从Ctrl+ Alt+ F1-F6虚拟终端成功登录,但不能从 GDM 迎宾器成功登录。
我猜是 GDM PAM 配置的其余部分出了问题,但是我对 GDM 如何与 PAM 交互(Ubuntu 18.04 上默认配置)的理解不够深入。如能得到任何帮助我将不胜感激。