LINUX.ORG.RU

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

 


0

2

Приобретённый мною ThinkPad X230T обладает сканером отпечатков пальцев, хочу использовать его как альтернативу паролю при входе в систему.

Установлен дисплейный менеджер SDDM.

$ cat /etc/pam.d/sddm
#%PAM-1.0

auth      sufficient pam_fprintd.so
auth      substack system-login

account         include         system-login
password        include         system-login
session         include         system-login

Предварительно я установил fprintd и считал с его помощью свои отпечатки пальцев.

Теперь можно не вводить пароль, а сразу нажать Enter, при этом включается сканер отпечатков пальцев и если провести пальцем, то авторизация пройдёт. Если ввести пароль, то всё равно включается сканер отпечатков и ожидает, что я проведу пальцем. А я так не хочу. Я хочу чтобы было правило ИЛИ. То есть при верном пароле сканировать отпечаток не должно быть необходимо, а сразу должна проходить авторизация.

Как такое сделать?

★★★★★

Потестил у себя на Федоре sudo, Thinkpad X200. Убери auth строки из /etc/pam.d/sddm. Добавь в /etc/pam.d/system-login:

 auth       sufficient   pam_unix.so try_first_pass likeauth nullok
 auth       sufficient   pam_fprint.so

Как результат первым должен быть ввод пароля, если он неправильный (нажать Enter например), то начнётся вход по отпечатку пальца. Если нужен сначала вход по отпечатку пальца, то ставь fprint выше. После входа по отпечатку пароль не требовался, после входа по паролю отпечаток не требовался. https://www.freedesktop.org/wiki/Software/fprint/pam_fprint/

Payload ()
Ответ на: комментарий от Payload

Убери auth строки из /etc/pam.d/sddm

Убрать auth строку с fprint, фикс.

Payload ()
Ответ на: комментарий от Payload

Мне нравится такая логика, однако я что-то не совсем понимаю, как правильно изменить system-login.

У меня там сейчас вот что:

#%PAM-1.0

auth       required   pam_tally.so         onerr=succeed file=/var/log/faillog
auth       required   pam_shells.so
auth       requisite  pam_nologin.so
auth       include    system-auth

account    required   pam_access.so
account    required   pam_nologin.so
account    include    system-auth

password   include    system-auth

session    optional   pam_loginuid.so
session    include    system-auth
session    optional   pam_motd.so          motd=/etc/motd
session    optional   pam_mail.so          dir=/var/spool/mail standard quiet
-session   optional   pam_systemd.so
session    required   pam_env.so

Не вижу тут pam_unix.so...

Зато вот вижу его в system-auth (который, как можно заметить, инклюдится в system-login):


#%PAM-1.0

auth      required  pam_unix.so     try_first_pass nullok
auth      optional  pam_permit.so
auth      required  pam_env.so

account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so

password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so

session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_permit.so

Однако, если просто изменить строку с pam_unix.so и добавить сразу после неё pam_fprintd.so, то это работает не верно. Да, если ввести пароль, то пускает сразу, иначе требует отпечаток. Если отпечаток верен, то пускает. Но если все попытки ввода отпечатка были неудачные, то... пускает всё равно. Нужно как-то сделать так, чтобы не пускал, если не прошёл ни пароль, ни отпечаток.

KivApple ★★★★★ ()
Ответ на: комментарий от KivApple

Как я понял, инклюдится так: /etc/pam.d/sddm -> /etc/pam.d/system-login -> /etc/pam.d/system-auth Как я понял, у тебя после всех неудачных попытках fprint происходит вход. Попробуй забекапить /etc/pam.d/sddm и после этого заполнить его этим, у меня это удачный конфиг для sudo из федоры: Но, как я догадываюсь, session тебе точно надо оставить свой


auth        required	  pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        sufficient    pam_fprintd.so
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required	  pam_deny.so

account     required	  pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required	  pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required	  pam_deny.so

session     optional	  pam_keyinit.so revoke
session     required	  pam_limits.so
session     required	  pam_unix.so

Payload ()
Ответ на: комментарий от Payload

Я сделал так (pam_env вынес вначало, pam_permit заменил на pam_deny), но прямо в system-login. И... вроде работает как надо. Что sudo, что sddm. Но проблема теперь с блокировщиком экрана KDE. А именно - если ввести пустой или неверный пароль, то он просто честно сообщает об этом и требует ввести заново, а не пытается считать отпечаток пальца.

Ещё под вопросом как это будет работать при удалённом доступе (по SSH, например). Нельзя ли как-нибудь сделать, чтобы он не пытался считывать отпечаток в этом случае?

KivApple ★★★★★ ()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от KivApple

блокировщиком экрана KDE. А именно - если ввести пустой или неверный пароль, то он просто честно сообщает об этом и требует ввести заново, а не пытается считать отпечаток пальца.

Ничего не знаю, у меня GDM. Но sudo у меня при неверном отпечатке/пароле просто меняет способ входа, т.е: неправильный пароль -> спросить отпечаток неправильный отпечаток 3 раза -> спросить пароль Наверное с KDM должно быть подобное.

Ещё под вопросом как это будет работать при удалённом доступе (по SSH, например). Нельзя ли как-нибудь сделать, чтобы он не пытался считывать отпечаток в этом случае?

У меня ничего такого никогда не было, ты про SSH сервер или клиент? Если ты пытаешься произвести SSH вход на сервер где стоит fprintd, и клиент пишет, что сервер просит у тебя отпечаток, то проверь откуда sshd берёт pam конфиг, и в pam конфиге исправь это.

Payload ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.