Bug 53128 - Не даёт kscreenlocker завершиться
Summary: Не даёт kscreenlocker завершиться
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: pam_pkcs11 (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 major
Assignee: manowar@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
: 53185 (view as bug list)
Depends on:
Blocks:
 
Reported: 2025-02-18 10:03 MSK by Sergey V Turchin
Modified: 2025-03-21 15:34 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey V Turchin 2025-02-18 10:03:52 MSK
Не даёт 1-му экземпляру kscreenlocker_greet завершиться, из-за чего невозможна разблокировка экрана, т.к. на чёрном экране ждёт запуска нового экземпляра.
С 0.6.12.1-alt3 всё ок.
Comment 1 Anton Farygin 2025-02-18 10:53:56 MSK
очень неприятная ошибка, постоянно приходится прибивать screensaver
Comment 2 manowar@altlinux.org 2025-02-18 11:53:38 MSK
Во всех случаях конфиг по умолчанию? Не пробовал вот сюда добавлять "kscreenlocker_greet" или как он там называется в PAM?

48   screen_savers = xfce4-screensaver, mate-screensaver, gnome-screensaver, kde4-kscreensaver, kscreensaver, xscreensaver;
Comment 3 Sergey V Turchin 2025-02-18 11:59:17 MSK
(Ответ для manowar@altlinux.org на комментарий #2)
> Во всех случаях конфиг по умолчанию? Не пробовал вот сюда добавлять
> "kscreenlocker_greet" или как он там называется в PAM?
> 
> 48   screen_savers = xfce4-screensaver, mate-screensaver, gnome-screensaver,
> kde4-kscreensaver, kscreensaver, xscreensaver;
Раньше работало без этого. В p11 сейчас работает. Меняется только этот пакет.
Comment 4 Sergey V Turchin 2025-02-18 12:00:20 MSK
(Ответ для manowar@altlinux.org на комментарий #2)
> как он там называется в PAM?
kde, kde-fingerprint, kde-smartcard
Comment 5 manowar@altlinux.org 2025-02-18 12:41:59 MSK
> Раньше работало без этого. В p11 сейчас работает. Меняется только этот пакет.

Я не могу вернуть старое поведение, оно было признано уязвимым. К тому же, эффект по большей части случайный был, что работало. Так что нужно разбираться с тем, что есть сейчас. Шаги воспроизведения точно какие? Обычный KDE и его обычный Ctrl+Alt+L? system-auth == pam_pkcs11 ?
Comment 6 Anton Farygin 2025-02-18 12:53:14 MSK
просто ставишь рабочую станцию К по умолчанию и обновляешь до Sisyphus.
Ничего дополнительного настраивать не нужно.
Comment 7 Anton Farygin 2025-02-18 12:55:07 MSK
Проблема в том, что kscreenlocker должен после разблокировки закончить свою работу, а он остаётся висеть и по факту не даёт запуститься следующему экземпляру.

pam_pkcs11 запускается даже тогда, когда не настроен.
Comment 8 manowar@altlinux.org 2025-02-18 14:40:25 MSK
# diff -u /etc/security/pam_pkcs11/pam_pkcs11.conf{~,}
--- /etc/security/pam_pkcs11/pam_pkcs11.conf~	2025-02-18 14:37:51.144721146 +0300
+++ /etc/security/pam_pkcs11/pam_pkcs11.conf	2025-02-18 14:37:49.331648724 +0300
@@ -26,7 +26,7 @@
   # For historical reasons card_only means: if we are using
   # a screen saver, and we didn't log in using a smart card
   # drop to the next pam module (PAM_IGNORE is returned).
-  card_only = false;
+  card_only = true;
 
   # wait_for_card means:
   #  1) nothing if card_only isn't set;
@@ -38,14 +38,14 @@
   # Right now, logged in means PKC11_LOGIN_TOKEN_NAME is set,
   # but we could something else later (like set some per-user
   # state in a PAM session module keyed off UID).
-  wait_for_card = false;
+  wait_for_card = true;
 
   # List of screen saver services.
   # This list is only parsed if card_only is set.  Basically the screen saver
   # will bypass pam_pkcs11 if a token was not used to login (The basic idea is
   # you always unlock the screen saver with the same mechanism you used to
   # login).
-  screen_savers = xfce4-screensaver, mate-screensaver, gnome-screensaver, kde4-kscreensaver, kscreensaver, xscreensaver;
+  screen_savers = xfce4-screensaver, mate-screensaver, gnome-screensaver, kde4-kscreensaver, kscreensaver, xscreensaver, kde-smartcard;
 
   # Filename of the PKCS #11 module. The default value is "default"
   use_pkcs11_module = opensc;

Посмотрите, подойдёт такой патч?
Comment 9 manowar@altlinux.org 2025-02-18 14:42:28 MSK
К слову: gdm-smartcard очень хитрый --- он эти параметры сам передаёт:

gdm-smartcard:5:auth		required	pam_pkcs11.so wait_for_card card_only
kde-smartcard:2:auth		[success=done ignore=ignore default=die]	pam_pkcs11.so
Comment 10 manowar@altlinux.org 2025-02-18 14:45:42 MSK
В связи с этим я не уверен, что нужно упоминать его в списке "скринсейверов":

+  screen_savers = xfce4-screensaver, mate-screensaver, gnome-screensaver, kde4-kscreensaver, kscreensaver, xscreensaver, kde-smartcard;

Потому, что у меня есть подозрение, что профиль (PAM service) "kde-smartcard" используется также и для входа в систему, а не только при разблокировке экрана. Так ли это? Про gdm я уверен на 99%, это как бы следует из названия.
Comment 11 Anton Farygin 2025-02-18 14:47:39 MSK
Да, с изменениями в конфиге у меня заработало. Но конечно надо ещё проверить - работает ли через смарткарты.
Comment 12 manowar@altlinux.org 2025-02-18 14:58:46 MSK
(Ответ для manowar@altlinux.org на комментарий #10)
> В связи с этим я не уверен, что нужно упоминать его в списке "скринсейверов":
> 
> +  screen_savers = xfce4-screensaver, mate-screensaver, gnome-screensaver,
> kde4-kscreensaver, kscreensaver, xscreensaver, kde-smartcard;

Если выставить только card_only и wait_for_card, то появляется на экране блокировки появляется интересная приписка: "(или используете смарт-карту)". Мне это поведение кажется более правильным. Но! По каким-то причинам, указание опций "wait_for_card card_only" прямо в командной строке (pam.d/kde-smartcatd) не работает. Я буду разбираться в чём дело.
Comment 13 Sergey V Turchin 2025-02-18 15:16:04 MSK
(Ответ для manowar@altlinux.org на комментарий #10)
> "kde-smartcard" используется также и для входа в систему, а не только при
> разблокировке экрана. Так ли это?
Нет. При выходе lightdm, а "kde-smartcard" в пакете kscreenlocker.
Comment 14 manowar@altlinux.org 2025-02-18 15:40:31 MSK
(Ответ для manowar@altlinux.org на комментарий #12)
> По каким-то причинам,
> указание опций "wait_for_card card_only" прямо в командной строке
> (pam.d/kde-smartcatd) не работает. Я буду разбираться в чём дело.

Сейчас перепроверил вот с таким патчем (pam_pkcs11.conf из пакета) и оно заработало:

# diff -u /etc/pam.d/kde-smartcard{~,}
--- /etc/pam.d/kde-smartcard~	2025-02-18 15:18:30.751554325 +0300
+++ /etc/pam.d/kde-smartcard	2025-02-18 15:18:49.786645688 +0300
@@ -1,5 +1,5 @@
 #%PAM-1.0
-auth		[success=done ignore=ignore default=die]	pam_pkcs11.so
+auth		[success=done ignore=ignore default=die]	pam_pkcs11.so wait_for_card card_only
 auth		substack	system-auth-common
 
Однако работает не стабильно, условно говоря, через раз. Не могу понять,
в чём дело, но похоже, есть какая-то гонка. Поэкспериментируйте несколько раз, пожалуйста.

Если проверять через pamtester:

# pamtester kde-smartcard testuser authenticate
ERROR:pam_pkcs11.c:378: no suitable token available
Пожалуйста, вставьте токен.
...

то всё стабильно: с опциями wait_for_card card_only он ждёт токен.
На экране разблокировки, по идее, тоже должно быть видно сообщение
("или используйте смарт-карту"). Почему "или"? Насколько я понял (скорее, догадался),
для kscreenlocker это _параллельный_ альтернативный сценарий разблокировки (отсюда
и специальный профиль "kde-smartcard"), поэтому виснуть он не должен. Зависание с
чёрным экраном получается в том случае, когда pam_pkcs11.so _сразу же_ возвращает
ошибку (это тоже не понятно, кстати).

У меня резюме следующее:

1. без опций wait_for_card card_only pam_pkcs11.so сразу же возвращает
ошибку аутентификации.
2. kscreenlocker в этом случае зависает (зацикливается в перезапуске?);
3. с опциями wait_for_card card_only pam_pkcs11.so отправляет пользователю
сообщение "Пожалуйста, вставьте токен", ждёт карту и не возвращает ошибку
(поскольку не завершает работу);
4. самое не понятное: если опции wait_for_card card_only указывать через
конфиг pam_pkcs11.conf, то kscreenlocker стабильно работает (показывает
сообщение "или используйте смарт-карту"), хотя через pamtester разницы
между передачей опций через kde-smartcard и pam_pkcs11.conf обнаружить
не удаётся (их и не должно быть судя по коду).
Comment 15 manowar@altlinux.org 2025-02-18 15:55:23 MSK
Да, товарищи, это race. Сейчас установил wait_for_card и card_only только в pam_pkcs11.conf и на четвёртой подряд блокировке экрана словил чёрный экран.
Соответственно, пункт 4 выше значения не имеет --- это было совпадение.
Comment 16 manowar@altlinux.org 2025-02-18 15:58:25 MSK
Предлагаю, всё же, запатчить kde-smartcard, так как card_only + wait_for_card для всех по умолчанию включая system-auth-pkcs11 (!) мне кажется плохой идеей --- в систему будет вообще не войти без токена.
Ну и с race разобраться.
Comment 17 Sergey V Turchin 2025-02-20 16:54:42 MSK
(Ответ для manowar@altlinux.org на комментарий #16)
> Предлагаю, всё же, запатчить kde-smartcard
Похоже на то
https://build.opensuse.org/projects/openSUSE:Factory/packages/kscreenlocker6/files/kde-smartcard?expand=1
Comment 19 Sergey V Turchin 2025-02-21 09:21:29 MSK
(Ответ для manowar@altlinux.org на комментарий #16)
> Ну и с race разобраться.
С этим ещё не разобрано.

Паша, при необходимости обсудите, плиз, с Олегом mcpain@alt, он ближе к теме.
Comment 20 Sergey V Turchin 2025-02-21 16:58:47 MSK
*** Bug 53185 has been marked as a duplicate of this bug. ***
Comment 21 manowar@altlinux.org 2025-03-07 12:09:30 MSK
kscreenlocker-6.3.2-alt1

Теперь поведение как будто другое: всегда чёрный экран, но если переключиться на другой VT и обратно, то появляется картинка. Кроме того, даже на чёрном экране можно ввести пароль и разблокировать. По правде сказать, с прошлой версией я такого не пробовал делать — не пробовал вводить пароль на чёрном экране.
Comment 22 Sergey V Turchin 2025-03-07 12:16:12 MSK
Я у себя прока проблем не замечал, но у меня нет ни карты ни пальца.
Comment 23 Олег Соловьев 2025-03-07 12:25:47 MSK
видимо, FIXED после нового конфига
Comment 24 Anton Farygin 2025-03-07 14:26:54 MSK
у меня на новом (моём) конфиге работает, но важно что бы работал на системном
Comment 25 manowar@altlinux.org 2025-03-18 16:46:43 MSK
(Ответ для Sergey V Turchin на комментарий #3)
> (Ответ для manowar@altlinux.org на комментарий #2)
> > Во всех случаях конфиг по умолчанию? Не пробовал вот сюда добавлять
> > "kscreenlocker_greet" или как он там называется в PAM?
> > 
> > 48   screen_savers = xfce4-screensaver, mate-screensaver, gnome-screensaver,
> > kde4-kscreensaver, kscreensaver, xscreensaver;
> Раньше работало без этого. В p11 сейчас работает. Меняется только этот пакет.

Возможно, что работало, но не во всех сценариях. Если, допустим, помогает добавление kde_smartcard в этот список, то нужно учитывать, что "помогает" это только для сценария разблокировки, в котором на самом деле не используется смарт-карта. Если применить такой рецепт для сценария, в котором пользователь входит в сеанс по смарт-карте, то тоже будет чёрный экран.
Comment 26 Sergey V Turchin 2025-03-19 12:23:29 MSK
(Ответ для manowar@altlinux.org на комментарий #25)
> Если, допустим, помогает
Помогает, в #53501 подтвердили.

> добавление kde_smartcard
kde-smartcard

> в этот список, то нужно учитывать, что "помогает"
> это только для сценария разблокировки, в котором на самом деле не
> используется смарт-карта.
Это уже хорошо и необходимо добавить в любом случае.
Comment 27 Белая Алёна 2025-03-20 19:19:40 MSK
Проверила воспроизводимость ошибки, если вставлен токен.
Провела следующие тесты:
1. control system-auth: local (конфиги не тронуты)
Если токен не вставлен, ошибка не воспроизводится
Если вставлен токен, то ошибка воспроизводится. 
Если указать в pam_pkcs11 в скринсейверах kde-smartcard, то ошибка перестает воспроизводиться, видимо, за счет опции card_only:
<pre># For historical reasons card_only means: if we are using
  # a screen saver, and we didn't log in using a smart card
  # drop to the next pam module (PAM_IGNORE is returned).
  card_only = false;</pre>
При блокировке также исчезает надпись "или используйте смарт-карту", т.е. сработал переход к следующему pam-модулю, т.к. логин был без токена. 

2. control system-auth: pkcs11, настроена работа токена для одного из двух пользователей
-без указания kde-smartcard в скринсейверах
пользователь с настроенным токеном
вход по токену - проблем при блокировке не наблюдается

вход по паролю - проблем не наблюдается 

пользователь без настроенного токена
вход по паролю (токен вставлен) - проблем не наблюдается
вход по паролю (токена нет) - проблем не наблюдается

-с указанием kde-smartcard в скринсейверах
пользователь с настроенным токеном
вход по токену - проблем при блокировке не наблюдается (со вставленным и вытащенным токеном)
вход по паролю - проблем не наблюдается, надпись "или используйте смарт-карту" пропадает (со вставленным и вытащенным токеном)

пользователь без настроенного токена
вход по паролю (токен вставлен) - проблем не наблюдается
вход по паролю (токена нет) - проблем не наблюдается, надпись "или используйте смарт-карту" пропадает

Итог: использование kde-smartcard в скринсейверах позволяет замаскировать проблему там, где она воспроизводится, при этом не ломается остальной функционал. 

Важно! Если вход производился по токену, то при блокировке остается надпись "или используйте смарт-карту", и разблокировка производится только по паролю, токен не воспринимается. Вероятно, нужна какая-то донастройка. Есть вероятность, что если токен будет восприниматься, то проблема снова воспроизведется, т.к. снова в какой-то момент появится ошибка аутентификации.
Comment 28 manowar@altlinux.org 2025-03-21 14:31:59 MSK
Алёна, спасибо!

Однако, я дважды внимательно перечитал списки "с указанием kde-smartcard в скринсейверах" и "без указания kde-smartcard в скринсейверах" и не заметил разницы: везде написано "проблем не наблюдается". Так почему вы пишете, что
"Итог: использование kde-smartcard в скринсейверах позволяет...", ведь получается, что этот параметр ни на что не влияет? \(oo)/
Comment 29 Sergey V Turchin 2025-03-21 15:19:54 MSK
(Ответ для manowar@altlinux.org на комментарий #28)
> с указанием kde-smartcard в скринсейверах
В телеге один человек с проблемой недавно подтвердил, что с добавлением в конфиг kde-smartcard работает. Карты не используются. Не могу найти сообщение.
Comment 30 manowar@altlinux.org 2025-03-21 15:34:00 MSK
Ну, раз карты не используются, то случай не релевантный. Нужно так сделать, чтобы разблокировка по карте не сломалась тоже.