При входе в систему под доменным пользователем, имя пользователя - регистронезависимое. Система принимает как и 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.
Версия - 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 Я проверил, работает, переменные задаются.
(Ответ для Evgeny Shesteperov на комментарий #1) > Для P10 на данный момент присутствует некоторое решение. Workaround: > > # apt-get install -y pam0_propperpwnam && \ > echo "-auth optional pam_propperpwnam.so" >> > /etc/pam.d/system-auth-common > > Я проверил, работает, переменные задаются. Спасибо, добавлю в конфигурацию.
В Сизифе в linux-pam >= 1.6.0 есть модуль pam_canonicalize_user, который можно использовать для решения этой задачи.
(Ответ для Dmitry V. Levin на комментарий #3) > В Сизифе в linux-pam >= 1.6.0 есть модуль pam_canonicalize_user, который > можно использовать для решения этой задачи. Надеюсь, он заменит существующий pam_propperpwnam . Жень! Обрати внимание.