Распознавание лица (howdy)

Материал из ALT Linux Wiki
Версия от 21:10, 12 декабря 2023; Elena Mishina (обсуждение | вклад) (Ограничение прав пользователей)

Введение

Howdy обеспечивает аутентификацию пользователя по геометрии лица. Howdy использует встроенные ИК-излучатели и камеру в сочетании с функцией распознавания лиц.

Используя Howdy совместно с PAM, можно настроить аутентификацию по геометрии лица везде, где до этого работала парольная аутентификация: вход в систему, экран блокировки, sudo, su и т.д.

Установка

Установить пакет howdy:

# apt-get install howdy

Для возможности настройки в графическом интерфейсе на платформах с KDE (дистрибутивы Альт Рабочая станция К, Альт Образование) установить пакет kde5-kcm-howdy:

# apt-get install kde5-kcm-howdy

Добавление модели лица в Howdy

Графический интерфейс

В KDE для настройки параметров Howdy и создания моделей лица можно воспользоваться графическим интерфейсом: «Параметры системы KDE5» → «Предпочтения пользователя» → «Распознавание лица».

Примечание: Запустить модуль настройки распознавания лица также можно из командной строки, выполнив команду:
$ kcmshell5 howdy


Параметры системы KDE5. Распознавание лица

В модуле «Распознавание лица» на вкладке «Устройство» необходимо выбрать ИК-камеру и нажать кнопку «Применить»:

Распознавание лица. Настройка камеры

В этом же окне можно настроить:

  • «Порог яркости» — пропустить кадр, если нижняя 1/8 гистограммы превышает этот процент от общего числа (чем ниже этот параметр, тем больше темных кадров игнорируется);
  • «Достоверность» — уверенность в принадлежности обнаруженного лица пользователю аккаунта (чем значение ниже, тем точнее). Не рекомендуется устанавливать значения выше 5;
  • «Предпросмотр» — включить камеру для предпросмотра изображения.

Нажатие кнопки «Сброс» приведёт к сбросу настроек к предыдущему сохранённому варианту, а нажатие кнопки «По умолчание» — к настройкам по умолчанию («Камера не выбрана», «Порог яркости»=60, «Достоверность»=3,5).

При сохранении настроек будет запрошен пароль пользователя root:

Запрос аутентификации от PolicyKit для сохранения настроек Howdy

Для добавления лица пользователя в базу данных на вкладке «Список моделей» модуля «Распознавание лица» необходимо нажать кнопку «Добавить». В открывшемся окне следует ввести имя модели и нажать кнопку «Сканировать»:

Создание модели для распознавания лица

Будет запрошен пароль текущего пользователя:

Запрос пароля пользователя

После ввода пароля начнётся процедура создания модели. Чтобы правильно создать модель следует смотреть в камеру.

В случае успешного создания модель появится в списке:

Модель лица успешно добавлена

Можно добавить еще несколько вариантов лица, повторно запустив процедуру создания модели (кнопка «Добавить»).

Для удаления модели следует выделить её в списке и нажать кнопку «Удалить»:

Список моделей

Командная строка

Все настройки Howdy можно выполнить в командной строке.

Синтаксис команды howdy:

howdy [-U пользователь] [-y] команда [аргумент]

где команда может принимать одно из следующих значений:

  • add — добавить новую модель лица пользователя;
  • clear — удалить все модели лица пользователя;
  • config — открыть файл конфигурации в редакторе по умолчанию;
  • disable — отключить или включить howdy;
  • list — вывести список всех сохраненных моделей лица пользователя;
  • remove — удалить определённую модель лица пользователя;
  • snapshot — сделайте снимок с камеры;
  • set — установить параметр конфигурации;
  • test — выполнить тест камеры и методов распознавания;
  • version — вывести версию howdy.

В конфигурации Howdy в параметре device_path необходимо указать устройство ИК-камеры, например:

device_path = /dev/video0

Сделать это можно:

  • отредактировав вручную файл /etc/howdy/config.ini;
  • открыв файл конфигурации для редактирования в текстовом редакторе по умолчанию командой:
    # howdy -U user config
    
  • выполнив команду:
    # howdy -U user set device_path /dev/video0
    
Примечание: При запуске команды howdy config можно указать нужный редактор:
# EDITOR=vim howdy -U user config


В большинстве случаев устройством для веб-камеры будет /dev/video0.

Примечание: Если камер несколько, можно воспользоваться утилитой v4l-utils, чтобы определить нужную.

Установить пакет v4l-utils:

# apt-get install v4l-utils

Вывести список устройств:

$ v4l2-ctl --list-devices
Integrated Camera: Integrated C (usb-0000:00:14.0-7):
	/dev/video0
	/dev/video1
	/dev/video2
	/dev/video3
	/dev/media0
	/dev/media1

Получить информацию по конкретному устройству:

$ v4l2-ctl -d /dev/video0 --all
Устройство должно иметь возможность захвата видео, а не только захвата метаданных.


После установки правильного пути к устройству, можно выполнить команду:

# howdy -U user test

Будет открыто окно для тестирования (для выхода необходимо в терминале нажать <Ctrl>+<C>).

Для добавления лица пользователя в базу данных для распознавания следует выполнить команду:

# howdy -U user add
Добавление образца лица пользователя user
Использование метки по умолчанию "Модель №1", так как установлен флаг -y

Пожалуйста, смотрите прямо в камеру

Сканирование завершено
Добавлен новый образец лица пользователя user
Внимание! При добавлении образца лица пользователя окно с изображением не открывается, чтобы правильно создать модель следует смотреть в камеру.


Можно добавить еще несколько вариантов лица, повторно запустив команду howdy add.

Если для пользователя настроен sudo он может самостоятельно добавить образец своего лица, выполнив команду

$ sudo howdy add
Добавление образца лица пользователя user
Введите название для нового образца лица [Модель №2]: 

Пожалуйста, смотрите прямо в камеру

Сканирование завершено
Добавлен новый образец лица пользователя user

Получить список всех моделей для пользователя можно, выполнив команду:

# howdy -U user list
Найденные образцы лица для пользователя user:

ID  Date                 Label
0   2023-12-12 10:19:19  test1
1   2023-12-12 10:28:49  test2
2   2023-12-12 10:57:50  Модель №2
3   2023-12-12 11:04:23  Модель №3

Для удаления определённой модели лица пользователя необходимо указать идентификатор этой модели:

# howdy -U user remove 3
Это удалит образец лица с названием "Модель №3" для пользователя user
Вы все равно хотите продолжить? [y/N]: y

Удален образец лица 3

Удалить все модели лица пользователя можно, выполнив команду:

# howdy -U user clear
Будут удалены все модели для пользователя user
Вы все равно хотите продолжить? [y/N]: y

Образцы лица удалены

Изменить значение параметра конфигурации howdy можно, выполнив команду howdy set, например:

# howdy -U user set dark_threshold 70
Файл конфигурации обновлен

Данная команда установит для параметра dark_threshold («Порог яркости») значение 70.

Настройка аутентификации

Чтобы Howdy мог аутентифицировать пользователя, необходимо в тот файл конфигурации PAM, где может потребоваться использование Howdy добавить строку:

auth            sufficient      pam_howdy.so

Например, для настройки локальной аутентификации эту строку следует добавить в начало файла /etc/pam.d/system-auth-local-only:

#%PAM-1.0
auth            sufficient      pam_howdy.so
auth            required        pam_tcb.so shadow fork nullok
account         required        pam_tcb.so shadow fork
password        required        pam_passwdqc.so config=/etc/passwdqc.conf
password        required        pam_tcb.so use_authtok shadow fork nullok write_to=tcb
session         required        pam_tcb.so

В данном случае сначала будет проводится проверка распознавания лица, и в случае если лицо не распознано, будет запрошен пароль.

Аутентификация по лицу при входе пользователя в систему:

Аутентификация по лицу

Запрос пароля, если лицо не распознано: Запрос пароля, если лицо не распознано

Аутентификация по лицу при регистрации пользователя в консоли:

Аутентификация по лицу при регистрации пользователя в консоли

Если для пользователя не созданы модели, будет сразу запрошен пароль.

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

По умолчанию при сохранении настроек howdy в модуле «Распознавание лица» запрашивается пароль администратора, а при создании и удалении модели — пароль пользователя (см. /usr/share/polkit-1/actions/org.kde.kcontrol.kcmhowdy.policy). Изменить это поведение можно при помощи средств polkit.

Например, чтобы запретить пользователю test удалять модели в модуле «Распознавание лица» можно создать файл /etc/polkit-1/rules.d/60-kcmhowdy.rules со следующим содержимым:

polkit.addRule(function (action, subject) {
  if (action.id == "org.kde.kcontrol.kcmhowdy.removefacemodel" &&
        subject.user == test) {
    return polkit.Result.NO;
  }
})

Ссылки