Вопрос или проблема
Я подключил свой сервер Solaris 11 к серверу OpenLDAP. Подключение работает, и с помощью “ldaplist” я вижу ldap-пользователей, которые должны находиться в базе поиска.
Список выглядит так:
dn: cn=user_1,dc=IT,dc=my-company,dc=com
dn: cn=user_2,dc=IT,dc=my-company,dc=com
dn: cn=user_3,dc=IT,dc=my-company,dc=com
dn: ou=People,dc=IT,dc=my-company,dc=com
Теперь команда “getent passwd” возвращает только пользователей из ou People, но только из ou People, я не могу изменить имя, если я это сделаю, ничего не будет возвращено.
Моя проблема в том, что я никогда не настраивал, чтобы ldapclient или getent passwd использовали ou People. Также мой файл ldap_client_file, сгенерированный ldapclient, говорит, что я не использую ou People. Он выглядит так:
NS_LDAP_SERVERS= my-companies-ldap-server.com:636
NS_LDAP_SEARCH_BASEDN= dc=IT,dc=my-company,dc=com
NS_LDAP_AUTH= tls:simple
NS_LDAP_CACHETTL= 0
NS_LDAP_CREDENTIAL_LEVEL= proxy
Будет здорово, если кто-то сможет помочь с идеей.
Спасибо!
Ответ или решение
Проблема, с которой вы сталкиваетесь, связана с тем, что команда getent passwd
отображает только пользователей из организационной единицы (OU) People в вашем OpenLDAP, хотя вы ожидаете увидеть пользователей в других OU или в корне дерева LDAP. Давайте рассмотрим, как можно устранить эту проблему.
-
Проверка конфигурации
ldapclient
:
Убедитесь, что ваша конфигурация в файле ldap_client_file действительно включает правильныйNS_LDAP_SEARCH_BASEDN
, который вы уже указали какdc=IT,dc=my-company,dc=com
. Это правильный корень для поиска. Однако, если у вас есть другие OU (например, "Users", "Admins" и т.д.), убедитесь, что они находятся внутри указанного корневого DN. -
Проверка фильтров LDAP:
Проверьте, не установлен ли фильтр, который мог бы ограничивать поисковые результаты именно OU People. Это может быть внутри конфигурации вашего LDAP. Фильтры ограничивают выборку пользователей и могут быть настроены таким образом, что пользователи из других OU игнорируются. -
Настройка the LDAP schema:
Убедитесь, что ваши пользователи в других OU имеют корректные атрибуты, соответствующие ожидаемым схемам (например, uid, cn и т. д.). Если атрибуты не соответствуют ожиданиям, это может повлиять на результаты, которые возвращаются командойgetent
. -
Обновление ldap_client_file:
Если вы хотите отображать пользователей из определенной OU, вы можете изменить значениеNS_LDAP_SEARCH_BASEDN
, чтобы указать более специфический DN, который включает нужные вам OU. Например, если вам нужно включить больше OU, вы можете попробовать установить значение какdc=IT,dc=my-company,dc=com
и проверить, будут ли добавлены пользователи. -
Проверка доступа и прав:
Убедитесь, что ваши настройки доступа (ACL) в вашем LDAP сервере позволяют пользователям видимость всех OU. Если доступ ограничен, это может также препятствовать отображению пользователей. -
Отладка и тестирование:
Используйте командыldapsearch
с соответствующими DN и фильтрами, чтобы проверить, возвращаются ли пользователи из других OU. Команда может выглядеть так:ldapsearch -x -b "dc=IT,dc=my-company,dc=com" "(objectClass=posixAccount)"
Это поможет убедиться, что пользователи существуют и доступны для поиска.
-
Перезагрузка служб:
Если вы внесли изменения в конфигурацию, возможно, вам потребуется перезапустить службы, которые используют LDAP, чтобы изменения вступили в силу. Это может включать повторный запуск службыnscd
или аналогичных.
Итак, следуя данным рекомендациям, вы сможете отладить использование getent passwd
и обеспечить отображение пользователей по всему дереву LDAP, а не только в OU People. Если проблема не решится, возможно, стоит обратиться к логам вашего LDAP сервера для получения более детальной информации о выполненных запросах.