Bug 47426 - Модуль завершается с ошибкой при разном регистре в имени пользователя
Summary: Модуль завершается с ошибкой при разном регистре в имени пользователя
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: linux-pam (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 major
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-09-01 08:21 MSK by Корытов Иван
Modified: 2024-01-31 09:12 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Корытов Иван 2023-09-01 08:21:35 MSK
При входе в систему под доменным пользователем, имя пользователя - регистронезависимое. Система принимает как и pupkin_vi, так и Pupkin_VI. При вводе имени с прописными буквами, на первый взгляд, вход успешен, т.к. загружается графический интерфейс, работает аутентификация и авторизация через Kerberos и т.д.

При попытке приложений воспользоваться службой dbus или polkit, появляются ошибки, например:

Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)

При сравнении вывода env или export на пользователях с строчными и прописными буквами, эти две переменные отсутствуют у последних. Причем, остальные переменные окружения (связанные с временными директориями) то используют имя пользователя с прописными буквами, как оно было введено на экране входа, то полностью строчными буквами, как отображается в выводе getent passwd <user>.

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

lightdm[86076]: pam_systemd(lightdm:session): Failed to get user record: Нет такого процесса

Возможным решением может стать добавление модуля pam_regex, который будет менять регистр для сетевых пользователей при использовании AD. Служба sssd при использовании провайдера ad по умолчанию переводит все имена объектов (пользователей, групп) в строчные буквы (параметр case_sensitive).

Система: Alt Workstation K 10.1, домен MS AD подключен через SSSD.
Comment 1 Evgeny Shesteperov 2023-09-02 13:04:21 MSK
Версия

-   sddm-0.19.0-alt2
-   pam-1.5.3-alt1

Дистрибутивы

-   p10-kworkstation-10.1-x86-64, обновлённый до Sisyphus

Шаги воспроизведения

1.  Ввести KWorkstation в домен MS AD.
2.  Войти в систему доменным пользователем большими буквами (например
    PUPKIN против pupkin).
3.  Открыть Konsole, выполнить:

    $ export | grep -E "(DBUS_SESSION_BUS_ADDRESS|XDG_RUNTIME_DIR)" && \
    env | grep -E "(DBUS_SESSION_BUS_ADDRESS|XDG_RUNTIME_DIR)"

Ожидаемый результат: переменные заданы, например:

    declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1084801179/bus"
    declare -x XDG_RUNTIME_DIR="/run/user/1084801179"
    DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1084801179/bus
    XDG_RUNTIME_DIR=/run/user/1084801179

Фактический результат: переменные не заданы.

Воспроизводится в P10.

Для P10 на данный момент присутствует некоторое решение. Workaround:

    # apt-get install -y pam0_propperpwnam && \
    echo "-auth        optional    pam_propperpwnam.so" >> /etc/pam.d/system-auth-common

Я проверил, работает, переменные задаются.
Comment 2 Корытов Иван 2023-09-04 09:38:14 MSK
(Ответ для Evgeny Shesteperov на комментарий #1)
> Для P10 на данный момент присутствует некоторое решение. Workaround:
> 
>     # apt-get install -y pam0_propperpwnam && \
>     echo "-auth        optional    pam_propperpwnam.so" >>
> /etc/pam.d/system-auth-common
> 
> Я проверил, работает, переменные задаются.

Спасибо, добавлю в конфигурацию.
Comment 3 Dmitry V. Levin 2024-01-31 00:32:27 MSK
В Сизифе в linux-pam >= 1.6.0 есть модуль pam_canonicalize_user, который можно использовать для решения этой задачи.
Comment 4 Sergey V Turchin 2024-01-31 09:12:56 MSK
(Ответ для Dmitry V. Levin на комментарий #3)
> В Сизифе в linux-pam >= 1.6.0 есть модуль pam_canonicalize_user, который
> можно использовать для решения этой задачи.
Надеюсь, он заменит существующий pam_propperpwnam .

Жень! Обрати внимание.