fprint
Современные ноутбуки и даже некоторые настольные системы оснащаются встроенными сканерами отпечатков пальцев. В Linux для работы с такими устройствами используется стек fprint — набор библиотек и утил
Современные ноутбуки и даже некоторые настольные системы оснащаются встроенными сканерами отпечатков пальцев. В Linux для работы с такими устройствами используется стек fprint — набор библиотек и утилит, позволяющих регистрировать отпечатки и использовать их для аутентификации через PAM (Pluggable Authentication Modules) . Центральным компонентом этого стека является демон `fprintd` — сервис D-Bus, управляющий сканером и базой данных отпечатков .
В этой статье мы рассмотрим полный цикл настройки аутентификации по отпечатку пальца в Linux: от проверки совместимости оборудования до интеграции с системой входа, sudo, экранной блокировкой и графическими окружениями.
1.1. Английские сокращения
| Сокращение | Английское обозначение | Русское обозначение |
| PAM | Pluggable Authentication Modules | Подключаемые модули аутентификации |
| D-Bus | Desktop Bus | Шина рабочего стола |
| fprintd | Fingerprint daemon | Демон отпечатков пальцев |
| libfprint | Fingerprint library | Библиотека для работы со сканерами |
| USB | Universal Serial Bus | Универсальная последовательная шина |
| SPI | Serial Peripheral Interface | Последовательный периферийный интерфейс |
| GDM | GNOME Display Manager | Дисплейный менеджер GNOME |
| SDDM | Simple Desktop Display Manager | Простой дисплейный менеджер |
| LightDM | Light Display Manager | Лёгкий дисплейный менеджер |
| Polkit | PolicyKit | Набор инструментов для управления правами |
| CVE | Common Vulnerabilities and Exposures | Общие уязвимости и экспозиции |
1.2. Русские сокращения
| Сокращение | Обозначение |
| БА | Биометрическая аутентификация |
| ДО | Дисплейный менеджер (экранный менеджер входа) |
| СМ | Сканер отпечатков пальцев |
| ПМ | Подключаемые модули аутентификации |
| ЗГ | Запись отпечатка (регистрация) |
| ПР | Проверка отпечатка |
2.1. Поддерживаемые устройства
Проект fprint поддерживает широкий спектр сканеров отпечатков пальцев — как встроенных в ноутбуки, так и внешних USB-устройств. Актуальный список поддерживаемых устройств можно найти на официальном сайте: https://fprint.freedesktop.org/supported-devices.html.
Важно: список поддерживаемых устройств обновляется нерегулярно и не является полным. Даже если ваше устройство отсутствует в списке, стоит попробовать настроить его — возможно, поддержка уже добавлена в более новой версии libfprint.
2.2. Определение модели сканера
Чтобы узнать, какой сканер установлен в вашей системе, используйте команду `lsusb`:
lsusb | grep -iE "fingerprint|biometric|goodix|synaptics|elan|validity"
Пример вывода для поддерживаемого устройства:
Bus 001 Device 004: ID 06cb:00bd Synaptics, Inc. Prometheus MIS Touch Fingerprint Reader
Bus 001 Device 003: ID 04f3:0c1a Elan Microelectronics Corp. ELAN:Fingerprint
Для получения более подробной информации об устройстве можно использовать:
lsusb -v -d [vendor:product]
2.3. Особые случаи: альтернативные версии libfprint
Некоторые сканеры требуют специальных версий библиотеки libfprint:
- libfprint-tod — для сенсорных сканеров (touch-based sensors)
- libfprint-elanmoc2 — для некоторых устройств ELAN, ожидающих слияния с основной веткой
- python-validity — для сканеров Validity (например, 138a:009d)
Если ваш сканер не работает с основной версией libfprint, поищите соответствующий форк в репозиториях вашего дистрибутива или на AUR (для Arch Linux).
2.4. Диаграмма: архитектура стека fprint
@startuml
title Архитектура стека fprint
rectangle "Пользовательское пространство" as user {
rectangle "Приложения\n(GNOME Settings, KDE System Settings)" as apps
rectangle "Команды CLI\n(fprintd-enroll, fprintd-verify)" as cli
rectangle "PAM-модуль\n(pam_fprintd.so)" as pam
}
rectangle "Системный уровень" as system {
rectangle "Сервис D-Bus\n(fprintd.service)" as dbus
rectangle "Библиотека libfprint" as lib
}
rectangle "Аппаратный уровень" as hw {
rectangle "Сканер отпечатков\n(USB/SPI)" as scanner
}
apps -down-> dbus : "D-Bus"
cli -down-> dbus : "D-Bus"
pam -down-> dbus : "D-Bus"
dbus -down-> lib : "использует"
lib -down-> scanner : "управляет"
note right: Взаимодействие с аппаратурой\nосуществляется через libfprint,\nкоторая поддерживает различные\nдрайверы сканеров.
@enduml
3.4. ALT Linux
apt-get install libfprint2 fprintd pam_fprintd
3.6. Проверка работоспособности fprintd
После установки убедитесь, что сервис fprintd доступен. В современных системах он запускается по требованию через D-Bus, поэтому команда `systemctl status` может показывать неактивный статус — это нормально .
systemctl status fprintd
Если требуется запустить сервис вручную:
sudo systemctl start fprintd
sudo systemctl enable fprintd # для автозапуска при загрузке
4.1. Основы fprintd-enroll
Для регистрации отпечатка используется команда `fprintd-enroll` . По умолчанию она запрашивает пароль текущего пользователя, а затем начинает запись правого указательного пальца .
fprintd-enroll
Процесс регистрации требует несколько касаний сканера (обычно 5–6) под разными углами. Успешное касание подтверждается сообщением `Enroll result: enroll-stage-passed`; завершение — `Enroll result: enroll-completed` .
4.2. Выбор конкретного пальца
Для регистрации другого пальца используйте опцию `-f`:
fprintd-enroll -f left-index-finger
Доступные названия пальцев:
- `left-thumb`, `left-index-finger`, `left-middle-finger`, `left-ring-finger`, `left-little-finger`
- `right-thumb`, `right-index-finger`, `right-middle-finger`, `right-ring-finger`, `right-little-finger`
4.3. Регистрация для другого пользователя
Для регистрации отпечатка для другого пользователя укажите его имя:
sudo fprintd-enroll username
4.4. Просмотр зарегистрированных отпечатков
fprintd-list
Для просмотра отпечатков другого пользователя:
sudo fprintd-list username
4.5. Удаление отпечатков
Удаление всех отпечатков текущего пользователя:
fprintd-delete $(whoami)
Удаление отпечатков root (если случайно зарегистрировали):
sudo fprintd-delete root
Удаление конкретного пальца:
fprintd-delete --finger right-index-finger $(whoami)
4.6. Проверка отпечатка
Для проверки корректности регистрации используйте `fprintd-verify`:
fprintd-verify
Если отпечаток распознаётся, команда завершится успешно.
5.1. Общие принципы PAM
PAM (Pluggable Authentication Modules) — это система, управляющая аутентификацией в Linux. Для включения аутентификации по отпечатку необходимо добавить модуль `pam<sub>fprintd</sub>.so` в соответствующие файлы конфигурации PAM .
5.2. Автоматическая настройка через pam-auth-update (Debian/Ubuntu)
В Debian и Ubuntu проще всего использовать утилиту `pam-auth-update`:
sudo pam-auth-update
В появившемся диалоге отметьте «Fingerprint authentication» и нажмите OK .
Или через командную строку:
sudo pam-auth-update --enable fprintd
5.3. Ручная настройка PAM
Для ручной настройки добавьте строку `auth sufficient pam<sub>fprintd</sub>.so` в начало секции `auth` нужного PAM-файла .
Пример для `/etc/pam.d/system-local-login`:
auth sufficient pam_fprintd.so
auth include system-login
...
Этот подход работает для любых PAM-сервисов: `login`, `gdm`, `lightdm`, `sddm`, `sudo`, `su`, `polkit` и других.
5.4. Настройка для SDDM
Для SDDM следуйте инструкциям в статье https://wiki.archlinux.org/title/SDDM#Using_a_fingerprint_reader.
5.5. Настройка для GDM
GDM обычно уже поддерживает аутентификацию по отпечатку. Если опция не появилась, проверьте, что ваш пользователь добавлен в группу `input` :
sudo usermod -aG input $USER
5.6. Настройка для sudo
Для использования отпечатка при выполнении команд с sudo добавьте в начало `/etc/pam.d/sudo`:
auth sufficient pam_fprintd.so
Теперь при выполнении `sudo` сначала будет запрошен отпечаток, а если он не распознан или не зарегистрирован — пароль.
5.7. Настройка для Polkit
Polkit требует отдельной настройки. Скопируйте файл правил:
sudo cp /usr/share/polkit-1/rules.d/50-default.rules /etc/polkit-1/rules.d/50-fingerprint.rules
Отредактируйте его, заменив группу `wheel` на вашу основную группу (обычно `wheel` или `sudo`).
5.8. Настройка для экранной блокировки (swaylock)
Для swaylock можно использовать следующую конфигурацию `/etc/pam.d/swaylock`:
auth sufficient pam_unix.so nullok
auth sufficient pam_fprintd.so ignore-empty-password
auth required pam_deny.so
Это позволяет разблокировать экран как по паролю, так и по отпечатку.
5.9. Диаграмма: процесс аутентификации через PAM
@startuml
title Процесс аутентификации через PAM с fprintd
participant "Приложение" as App
participant "PAM" as PAM
participant "pam_fprintd.so" as Module
participant "fprintd (D-Bus)" as Daemon
participant "Сканер" as Scanner
App -> PAM : запрос аутентификации
PAM -> Module : вызов модуля
Module -> Daemon : запрос сканирования через D-Bus
Daemon -> Scanner : сканирование отпечатка
Scanner --> Daemon : результат
Daemon --> Module : успех/неудача
alt Отпечаток распознан
Module --> PAM : success
PAM --> App : аутентификация пройдена
else Отпечаток не распознан
Module --> PAM : ignore (fallback)
PAM -> PAM : следующий модуль (пароль)
PAM --> App : результат
end
@enduml
6.1. GNOME
В GNOME настройка отпечатков доступна через «Настройки» → «Пользователи» → «Аутентификация по отпечатку».
6.2. KDE Plasma
В KDE Plasma настройка доступна через «Системные настройки» → «Пользователи» → «Настроить аутентификацию по отпечатку».
6.3. Работа с экранной блокировкой
После настройки PAM для соответствующего сервиса (например, `lightdm`, `gdm`, `kscreenlocker`) отпечаток будет работать и для разблокировки экрана.
7.1. Ошибка при регистрации: «unknown error»
При длительной неудачной регистрации может возникнуть ошибка «unknown error». Решение: перезагрузите компьютер.
7.2. fprintd мешает регистрации от имени обычного пользователя
Иногда фоновый процесс `fprintd` от root мешает регистрации. Временно остановите его:
sudo pkill fprintd
Затем повторите попытку регистрации.
7.3. Сканер не определяется
Проверьте, что устройство видно в системе:
lsusb
Если сканер отсутствует, возможно, требуется загрузка модуля ядра или установка дополнительных драйверов.
7.4. Отпечаток не работает после выхода из режима сна
После выхода из сна может потребоваться перезапуск fprintd:
sudo systemctl restart fprintd
В некоторых случаях также помогает перезапуск PAM-сессии (например, перелогин).
7.5. Отпечаток работает в sudo, но не в Polkit
Проверьте настройку Polkit (см. раздел 5.7).
7.6. Проблемы с Validity VFS7500
Для некоторых сканеров Validity может потребоваться использование `python-validity` или других форков.
7.7. Анализ логов fprintd
Для диагностики проблем используйте журнал fprintd:
journalctl -u fprintd.service -p7
8.1. Предупреждение безопасности
Использование только аутентификации по отпечатку для `su`, `polkit` или `sudo` представляет угрозу безопасности, так как фоновые процессы могут получить разрешения без явного запроса отпечатка (CVE-2024-37408). Рекомендуется всегда оставлять возможность ввода пароля как запасной вариант.
8.2. Хранение данных
Отпечатки хранятся в `/var/lib/fprint/` и доступны только root. Для каждого пользователя создаётся отдельная директория с шаблонами.
8.3. Связка ключей (Gnome Keyring, KDE Wallet)
Если вы используете отпечаток для входа, вам всё равно потребуется ввести пароль для разблокировки связки ключей, если она зашифрована паролем.
8.4. Надёжность
Качество регистрации зависит от состояния кожи и сканера. Сухая или повреждённая кожа может ухудшить качество шаблона.
- Определите модель вашего сканера с помощью `lsusb`. Проверьте, поддерживается ли он в списке libfprint.
- Установите fprintd и зарегистрируйте два пальца.
- Настройте PAM для использования отпечатка при входе в систему (через GDM или LightDM).
- Настройте `sudo` для использования отпечатка.
- Проверьте работу отпечатка после перезагрузки и после выхода из сна.
fprintd предоставляет удобный и безопасный способ использования биометрической аутентификации в Linux. Правильная настройка включает проверку совместимости оборудования, регистрацию отпечатков, настройку PAM и интеграцию с графическими окружениями. Несмотря на некоторые ограничения (необходимость пароля для связки ключей, возможные проблемы после сна), современный стек fprintd работает стабильно на большинстве поддерживаемых устройств.
- Список поддерживаемых устройств: https://fprint.freedesktop.org/supported-devices.html
- Репозиторий fprintd: https://gitlab.freedesktop.org/libfprint/fprintd
- Репозиторий libfprint: https://gitlab.freedesktop.org/libfprint/libfprint
- Arch Wiki Fprint: https://wiki.archlinux.org/title/Fprint
- Debian Wiki Fingerprint: https://wiki.debian.org/SecurityManagement/fingerprint
Все команды выполняются в терминале. Для регистрации и управления отпечатками не требуются права root (если не указано иное). Некоторые команды могут потребовать перезагрузки или перелогина для применения изменений в группах (например, `input`).