Bug 38544 - Показывать последнего пользователя при greeter-hide-users=true
Summary: Показывать последнего пользователя при greeter-hide-users=true
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: lightdm-gtk-greeter (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 minor
Assignee: manowar@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-05-27 11:11 MSK by Andrey Cherepanov
Modified: 2021-03-02 13:51 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Cherepanov 2020-05-27 11:11:33 MSK
Просят автоматически заполнять имя последнего залогиненного пользователя в поле ввода и при greeter-hide-users=true.
Comment 1 Andrey Cherepanov 2021-02-17 14:49:45 MSK
Последний пользователь сохраняется в параметре last-user в файле /var/lib/ldm/.cache/lightdm-gtk-greeter/state

# cat /var/lib/ldm/.cache/lightdm-gtk-greeter/state 
[greeter]
last-user=ho
last-session=mate
Comment 2 manowar@altlinux.org 2021-02-18 16:37:17 MSK
Хорошо. Там ещё по-моему такая проблема, что при самом первом входе и выборе списком выбор по умолчанию пуст. Я думаю стоит сразу выбирать первого пользователя из списка.
Comment 3 Andrey Cherepanov 2021-02-18 17:19:56 MSK
(Ответ для manowar@altlinux.org на комментарий #2)
> Хорошо. Там ещё по-моему такая проблема, что при самом первом входе и выборе
> списком выбор по умолчанию пуст. Я думаю стоит сразу выбирать первого
> пользователя из списка.

Да, хорошая идея.
Comment 4 Andrey Cherepanov 2021-02-20 08:05:18 MSK
(Ответ для manowar@altlinux.org на комментарий #2)
> Хорошо. Там ещё по-моему такая проблема, что при самом первом входе и выборе
> списком выбор по умолчанию пуст. Я думаю стоит сразу выбирать первого
> пользователя из списка.

Когда потестить можно будет?
Comment 5 manowar@altlinux.org 2021-02-20 16:24:33 MSK
Завтра, наверное. Я тут ещё вот эту изучаю: https://bugzilla.altlinux.org/show_bug.cgi?id=38363 . Я про неё забыл, а вчера сам натолкнулся.
Comment 6 manowar@altlinux.org 2021-02-24 14:15:46 MSK
Требование получается несколько противоречивым. Поясняю. lightdm-gtk-greeter переписывался для того, чтобы поддерживать любые схемы аутентификации, а не только типичную пару логин/пароль. Например, при использовании смарт-карт карта опознаётся автоматически и необходимость запрашивать имя пользователя отпадает. Гипотетически могут быть иные схемы, в которых первым делом у пользователя запрашивается не имя пользователя, а что-то иное. Хотя ясно, что это экзотика. Так вот, для обработки всех таких случаев сеанс аутентификации начинается без указания имени пользователя — start_authentication(NULL) и дальше всё решает PAM: если ему требуется Username, то пользователю будет отправлен соответствующий запрос на ввод. На мой взгляд, такое поведение нужно сохранить — по крайней мере в виде опции.

Теперь о том, как всё-таки можно реализовать требование. Самый простой способ, это предварительно вставить в поле ввода имя пользователя. И надеяться на то, что первое, о чём спросит PAM, будет "Enter username:" или что-то в этом роде. Ясно, что в 99% случаев это будет выглядеть адекватно.

Второй вариант — не начинать с start_authentication(NULL), а честно выводить поле ввода имени пользователя перед началом процедуры аутентификации и после ввода вызывать уже start_authentication(username). Это несколько сложнее по реализации, но органичнее вписывается в устройство lightdm-gtk-greeter и не противоречит логике PAM (который предусматривает начало сеанса для конкретного пользователя).
Comment 7 Andrey Cherepanov 2021-02-24 17:03:06 MSK
(Ответ для manowar@altlinux.org на комментарий #6)
> Требование получается несколько противоречивым. Поясняю. lightdm-gtk-greeter
> переписывался для того, чтобы поддерживать любые схемы аутентификации, а не
> только типичную пару логин/пароль. Например, при использовании смарт-карт
> карта опознаётся автоматически и необходимость запрашивать имя пользователя
> отпадает. Гипотетически могут быть иные схемы, в которых первым делом у
> пользователя запрашивается не имя пользователя, а что-то иное. Хотя ясно,
> что это экзотика. Так вот, для обработки всех таких случаев сеанс
> аутентификации начинается без указания имени пользователя —
> start_authentication(NULL) и дальше всё решает PAM: если ему требуется
> Username, то пользователю будет отправлен соответствующий запрос на ввод. На
> мой взгляд, такое поведение нужно сохранить — по крайней мере в виде опции.
> 
> Теперь о том, как всё-таки можно реализовать требование. Самый простой
> способ, это предварительно вставить в поле ввода имя пользователя. И
> надеяться на то, что первое, о чём спросит PAM, будет "Enter username:" или
> что-то в этом роде. Ясно, что в 99% случаев это будет выглядеть адекватно.
> 
> Второй вариант — не начинать с start_authentication(NULL), а честно выводить
> поле ввода имени пользователя перед началом процедуры аутентификации и после
> ввода вызывать уже start_authentication(username). Это несколько сложнее по
> реализации, но органичнее вписывается в устройство lightdm-gtk-greeter и не
> противоречит логике PAM (который предусматривает начало сеанса для
> конкретного пользователя).

Если запросили имя пользователя (и под полем показывается локализованное название поля - "Имя пользователя"), то именно при известной подписи поля и надо вставлять. Так что второй вариант - заполнять при триггере username.
Comment 8 Repository Robot 2021-02-25 17:51:05 MSK
lightdm-gtk-greeter-2.0.7-alt2 -> sisyphus:

 Thu Feb 25 2021 Paul Wolneykien <manowar@altlinux> 2.0.7-alt2
 - Added "enter-username" config param to explicitly ask for a
   username before authentication starts (closes: 38544).
Comment 9 manowar@altlinux.org 2021-02-25 19:01:13 MSK
Если будете тестировать: там новый параметр добавился "enter-password" в /etc/lightdm/lightdm-gtk-greeter.conf. И там же есть ещё один "restart-on-cancel". Он старый, но имеет смысл с ним тоже проверить, что всё адекватно.

Напоминаю, что "greeter-hide-users" находится в другом конфиге — /etc/lightdm/lightdm.conf.
Comment 10 Валентина 2021-03-02 13:15:00 MSK
Проверяю пакет в р9, обновленный до таска #267018 (lightdm-gtk-greeter.git=v2.0.7-alt2), выполняю следующие шаги:
1. Ставлю в /etc/lightdm/lightdm.conf greeter-hide-users=true
2. # lightdm-gtk-greeter
3. # reboot
4. Начинаю сессию под пользователем test, завершаю сеанс.
5. Попадаю на поле "Учетная запись".
Но в результате поле "Учетная запись" пустое. Аналогичное поведение и в предыдущей версии пакета. Просьба уточнить, какое ожидаемое поведение.
Comment 11 manowar@altlinux.org 2021-03-02 13:47:07 MSK
/etc/lightdm/lightdm-gtk-greeter.conf: enter-username=true ?

Если не включить этот режим, то разницы не будет.
Comment 12 Валентина 2021-03-02 13:51:51 MSK
(Ответ для manowar@altlinux.org на комментарий #11)
> /etc/lightdm/lightdm-gtk-greeter.conf: enter-username=true ?
> 
> Если не включить этот режим, то разницы не будет.

С этим параметром выводит имя последнего пользователя корректно. Поняла свой промах. Спасибо.