Сканер отпечатков пальцев (fprintd)

Материал из ALT Linux Wiki

Введение

В Linux использование сканера отпечатков пальцев используется fprintd и библиотека libfprint.

Linux поддерживает сканеры как с USB, так и с SPI интерфейсом.

Убедитесь, что ваш сканер поддерживается libfprint`ом перед тем, как приступить к конфигурации. Полный список поддерживаемых устройств можете посмотреть здесь.

Конфигурация

Система fprintd не предоставляет графического интерфейса, так что все дальнейшие действия будут проводится из консоли.

Примечание: Испытания проводились на Lenovo ThinkPad E15, сканер 04f3:0c4b


Установка

Установить пакеты libfprint2, fprintd и pam_fprintd:

# apt-get update
# apt-get install libfprint2 fprintd pam_fprintd

Добавление отпечатков пальцев

Добавление отпечатков пальцев происходит при помощи fprintd-enroll:

$ fprintd-enroll --help
Использование:
    fprintd-enroll [ПАРАМЕТР…] [username] Enroll a fingerprint

Параметры приложения:
    -f, --finger      Finger selected to verify (default is automatic)

При запуске fprintd-enroll без параметров автоматически происходит создание отпечатков для текущего пользователя, для правого указательного пальца.

Примечание: Этот этап — самый времязатратный. Лучше всего у меня отработало с левым указательным пальцем, но наверное зависит от сканера. Также, если долго и неуспешно проводить сканирование, может возникнуть ошибка "unknown error". Для её решения нужно перезагрузить компьютер.


Настройка авторизации

Для настройки авторизации требуется на второе место в начало файла /etc/pam.d/lightdm внести строку:

auth        sufficient    pam_fprintd.so

В данном случае сначала будет проводится запрос пароля, в случае если он не верный, включается проверка по отпечатку пальца. Подробнее про систему pam, можно ознакомится в соответствующей статье на АрчВики.

Примечание: Такой же способ может работать с любыми файлами в /etc/pam.d/. Например, авторизацию по отпечатку пальцев можно настроить для su, sudo, polkit и kde.


Ограничение прав пользователей

По умолчанию пользователь имеет права на неограниченное создание новых записей об отпечатках. Ограничить это можно при помощи средств polkit. Для этого нужно создать файл /etc/polkit-1/rules.d/50-net.reactivated.fprint.device.enroll.rules и внутри прописать следующее:

polkit.addRule(function (action, subject) {
  if (action.id == "net.reactivated.fprint.device.enroll") {
    return subject.user == "root" ? polkit.Result.YES : polkit.Result.NO
  }
})

Теперь создавать новые записи сможет только root пользователь.

Ссылки