Как заставить ldap/nss/pam принимать имена пользователей, начинающиеся с числа: pam_systemd(gdm-password:session): Не удалось получить запись пользователя: Неверный аргумент.

Вопрос или проблема

Как заставить мой стек ldap/pam/nss принимать имена пользователей, начинающиеся с цифры?

Я устанавливаю LDAP/NSS/PAM по инструкциям от Debian. Я пробовал как libnss-ldap, так и libnss-ldapd.

Оба работают… если имя пользователя не начинается с цифры (или, в случае libnss-ldap, если в имени пользователя нет точки). К сожалению, все имена пользователей в моей организации — это семиразрядные номера!

Вот ошибка при попытке войти с именем пользователя 9999999:

...gdm-password][5010]: pam_unix(gdm-password:session): сессия открыта для пользователя 9999999 (uid=0)
...gdm-password][5010]: pam_systemd(gdm-password:session): Не удалось получить запись пользователя: Недопустимый аргумент

А вот те же самые логи при попытке войти с именем пользователя test:

...gdm-password][5242]: pam_unix(gdm-password:session): сессия открыта для пользователя test (uid=0)

Я использую версию пакета libnss-ldap, которая установлена с Ubuntu 20.04, а именно версия 0.9.11-1.

Ответ или решение

Чтобы настроить LDAP/NSS/PAM для принятия имен пользователей, начинающихся с цифры, необходимо внести некоторые изменения в конфигурации и убедиться, что все компоненты правильно взаимодействуют друг с другом. Вот поэтапное руководство по решению вашей проблемы:

Шаг 1: Проверка конфигурации PAM

Убедитесь, что в вашем файле конфигурации PAM для GDM (/etc/pam.d/gdm-password) используют правильные модули, такие как pam_unix.so, pam_ldap.so и pam_systemd.so. Пример конфигурации может выглядеть следующим образом:

auth    required        pam_unix.so nullok
auth    sufficient      pam_ldap.so
auth    required        pam_deny.so

account required        pam_unix.so
account sufficient      pam_ldap.so
account required        pam_deny.so

session required        pam_unix.so
session optional        pam_ldap.so
session optional        pam_systemd.so

Шаг 2: Настройка NSS

Убедитесь, что ваша система правильно настроена для использования NSS (Name Service Switch). Проверьте файл /etc/nsswitch.conf и добавьте или убедитесь в наличии следующей строки:

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

Шаг 3: Настройка LDAPI

Если вы ещё не используете, попробуйте настроить libnss-ldapd, которая может лучше поддерживать имена пользователей, начинающиеся с цифр. Используйте следующую команду для установки:

sudo apt install libnss-ldapd

Настройте конфигурацию в файлах /etc/ldap/ldap.conf и /etc/nslcd.conf, чтобы убедиться, что они соответствуют вашей LDAP-системе.

Шаг 4: Проверка записей в LDAP

Убедитесь, что записи пользователей в вашей LDAP-системе корректные и не содержат ошибок. Выполните поиск пользователя через команду LDAP:

ldapsearch -x -b "dc=yourdomain,dc=com" "(uid=9999999)"

Шаг 5: Настройка параметров PAM

В некоторых случаях может потребоваться добавить специальные параметры для PAM. Откройте файл /etc/pam.d/common-session и добавьте следующую строку, если её там нет:

session required pam_unix.so

Шаг 6: Логи и отладка

Для отладки используйте журнал системных сообщений. Обратите внимание на все предупреждения и ошибки, которые могут давать подсказки о неправильной конфигурации:

journalctl -xe
tail -f /var/log/auth.log

Шаг 7: Перезагрузка сервисов

После внесения всех изменений перезагрузите сервисы PAM и NSS:

sudo systemctl restart nslcd
sudo systemctl restart gdm

Заключение

После выполнения всех этих шагов ваша система должна корректно обрабатывать имена пользователей, начинающиеся с цифр. Если проблема не исчезает, попробуйте исследовать более подробно лог-файлы и документацию к используемым библиотекам. Важно иметь актуальные версии пакетов, поэтому перед началом настройки убедитесь, что ваша система обновлена.

Оцените материал
Добавить комментарий

Капча загружается...