在将新模块添加到 /etc/pam.d/common-auth 后,系统重启时登录失败

在将新模块添加到 /etc/pam.d/common-auth 后,系统重启时登录失败

我正在尝试添加一个仅身份验证的 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 上默认配置)的理解不够深入。如能得到任何帮助我将不胜感激。

相关内容