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