有没有办法让 PAM 并行运行身份验证模块?
对于所有使用 PAM 的人来说这可能会有用。
看来 PAM 是按顺序和阻塞方式运行身份验证模块的。
对于想要使用多种身份验证机制的人来说,这意味着我们必须拥有一个不具有阻碍性的方法层次结构。
我试图解决的问题是 - GNome 密钥环需要密码才能解锁,但我也激活了 pam_fprintd...并且正在使用面部识别摄像头。
这意味着当我第一次登录时 - 首先是 pam_fprintd 块,然后是面部识别块,然后我才能输入密码。
sudo 也会发生这种情况。这是一个主要的 PITA。
答案1
面对同样的问题,我认为仅靠PAM是无法解决的。来自 pam_fprintd.so ( ) 的手册页man pam_fprintd
:
局限性
PAM 堆栈设计为序列化身份验证,因此 pam_fprintd 不可能同时允许通过密码和指纹进行身份验证。
由使用 PAM 服务的应用程序来实现单独的 PAM 进程并单独运行单独的身份验证堆栈。例如,这就是为 gdm 用户提供多种身份验证方法的方式。
例如, GNOME 显示管理器 ( gdm3
) 允许并行输入密码和指纹(仅需要其中之一,而不需要两者),它自己并行实现了多个身份验证堆栈。
我还找到了一个GitHub问题在 linux-pam 存储库中,讨论了 PAM 是否应该支持这一点、是否有 RFC 支持或反对它 - 但最终,开发人员似乎没有接受它。
最后,这使得这个答案没有答案(不幸的是),直到 linux-pam 或第三方对 PAM 实现一些通用扩展以允许并行多个身份验证模块。
答案2
如果您使用的是 fprint 版本 1.92 或更高版本,您可以按Ctrl+C停止尝试使用指纹并切换到通过密码进行身份验证:实现这个的承诺。