fprintd owns the reader and answers authentication requests; the attempt count before password fallback is a parameter on the PAM module line that calls it.
Is the reader or the PAM stack the problem
fprintd-list "$USER"
fprintd-verify
systemctl status fprintd
lsusb
fprintd-verify success means the reader and stored prints are fine; the failure is the desktop’s PAM configuration. Fedora generates PAM files from profiles:
authselect current
authselect check
grep -R "pam_fprintd" /etc/pam.d/ /etc/authselect/ 2>/dev/null
That grep lists every service accepting a fingerprint, and by omission those that do not.
Raising the attempt limit
⚠️ Back up first. A malformed
authline locks you out of the session you edit from; recovery needs a TTY or rescue boot.sudo cp /etc/pam.d/system-local-login /etc/pam.d/system-local-login.bak sudo cp /etc/pam.d/sudo /etc/pam.d/sudo.bak
Change the module line — both max_tries= and max-tries= appear in documentation and the module accepts that name:
auth sufficient pam_fprintd.so max_tries=3 timeout=10
sufficient ends authentication on success; failure falls through to the next method. The file depends on the failing prompt:
| File | Affects |
|---|---|
/etc/pam.d/system-local-login | local login on Arch |
/etc/pam.d/system-auth | every service that includes it, on Arch |
/etc/pam.d/gdm-password | GDM |
/etc/pam.d/sudo | sudo |
/usr/lib/pam.d/polkit-1 | desktop authentication dialogs |
/usr/lib/pam.d/polkit-1 is polkit’s stack: the prompt when an unprivileged process asks something privileged — mounting a drive, changing network settings. It includes system-auth by default, so a max_tries there covers all polkit prompts; to limit it to polkit, bypass the include:
auth sufficient pam_fprintd.so max_tries=3 timeout=10
auth include system-auth
Recovery
Failure mode: a session that will not unlock because the PAM stack accepts nothing.
- Press your password first — fingerprint is usually additional, not a replacement.
- Esc sometimes switches the GDM auth UI.
- Ctrl+Alt+F3 (or F2, F4, F5) reaches a text login on a TTY; the graphical session keeps running.
loginctl unlock-session
loginctl list-sessions
sudo cp /etc/pam.d/system-local-login.bak /etc/pam.d/system-local-login
On a TTY, Ctrl+C aborts the fingerprint prompt and falls back to the password; graphical greeters do not.
Keep max_tries low: each attempt is another chance for a replicated or forged print — the Arch Wiki’s warning about fingerprint for su and sudo. Fingerprint as sufficient for sudo without a TTY check is a privilege-escalation path; the documented guard is a pam_succeed_if rule matching service in sudo:su:su-l tty in :unknown before the fingerprint line — the pattern in Arch setup notes.