不仅在登录时使用指纹认证

我使用的是18.04版本,并成功启用了指纹登录。我希望不仅可以用指纹登录,还能在以下情况下使用指纹验证:
  1. 在终端中执行sudo命令时进行身份验证
  2. 在Gnome中进行身份验证(例如安装应用程序等)
  3. 解锁钥匙链项目(这是我找到的唯一相关信息,但似乎不可能实现)
grep print /etc/pam.d -R的输出结果:
/etc/pam.d/gdm-fingerprint:auth required    pam_fprintd.so
/etc/pam.d/gdm-fingerprint:password required       pam_fprintd.so

/etc/pam.d/gdm-fingerprint文件的内容

#%PAM-1.0
auth    requisite       pam_nologin.so
auth    required    pam_succeed_if.so user != root quiet_success
auth    required    pam_fprintd.so
auth    optional        pam_gnome_keyring.so
@include common-account
# SELinux needs to be the first session rule. This ensures that any 
# lingering context has been cleared. Without this it is possible 
# that a module could execute code in the wrong domain.
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close
session required        pam_loginuid.so
# SELinux needs to intervene at login time to ensure that the process
# starts in the proper default security context. Only sessions which are
# intended to run in the user's context should be run after this.
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so open
session optional        pam_keyinit.so force revoke
session required        pam_limits.so
session required        pam_env.so readenv=1
session required        pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale
@include common-session
session optional        pam_gnome_keyring.so auto_start
password required       pam_fprintd.so

/etc/pam.d/sudo的内容

#%PAM-1.0
session    required   pam_env.so readenv=1 user_readenv=0
session    required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-auth
@include common-account
@include common-session-noninteractive

你是如何启用指纹登录的? - muru
通过设置>详细信息>用户。您可以启用指纹登录并注册一个手指。 - Hendrik
请将grep print /etc/pam.d -R的输出添加到问题中。 - muru
根据您的要求更新了问题。 - Hendrik
我最近没有使用fprintd,但是我可以建议你在/etc/pam.d/sudo的类似位置添加这些行。保持sudo -i在TTY中打开,这样如果更改不起作用,你可以撤销这些更改。 - muru
我尝试了你建议的几种变体,它们确实产生了一些效果。但并不完全符合我的期望。首先,我在看起来合适的位置添加了这两行代码。这似乎导致了一个双重解决方案:首先通过指纹进行身份验证,然后仍然需要输入密码。其次,我只尝试在sudo文件的顶部添加了auth:required这一行代码。使用这个解决方案时,它始终无法识别我的指纹。第三种方法没有产生任何效果。 - Hendrik
请将两个PAM文件都发布出来,也许我们可以找到最佳位置。根据我的经验,它总是在密码提示后显示指纹使用说明,并且指纹验证完成后无需输入密码。 - muru
1个回答

跑步

sudo pam-auth-update

在对话框中使用空格键启用指纹认证

package configuration for PAM


我做了这个,但似乎没有任何变化?如何在20.04上获得图形用户界面(GUI)? - CpILL
@CpILL,只需重新启动您的计算机,然后您就可以在终端和Gnome中使用指纹进行身份验证。当然,您需要使用“Gnome设置->用户”或从终端使用fprintd-enroll来注册您的指纹。 - b247_eu
3有没有办法在不等待fprintd对话框超时的情况下强制使用密码?假设我正在使用外部键盘和显示器,并且无法触及指纹传感器(典型的工作坞设置)。 - axolotl
3谢谢,但是对于它的工作方式来说,使用sudo相当麻烦。提示应该显示“使用指纹传感器或输入密码”。这样就可以两种方式都允许了。现在的情况是只显示提示信息,键盘输入没有受到保护。如果用户想要输入密码或者误输入密码,那么所有观察屏幕的人都能看到。我现在正在使用外接显示器...所以我必须离开椅子才能触摸指纹传感器...在这种情况下,我希望能够轻松地使用密码代替。 - leoheck
2至少在Ubuntu 22.04版本中,你可以按下Ctrl+C来取消指纹提示,并转到密码提示。否则,默认等待10秒后超时。你可以通过编辑/etc/pam.d/common-auth文件并更改timeout=10部分来自定义超时时间。 - Ari
对于任何想知道为什么要减少由@Ari提到的“timeout”的人来说,man pam_fprintd中写着:“默认超时时间为30秒,最小值为10秒。” - ricab