libnss-ldap getent passwd - AD отвечает правильно, но вывод показывает локальный/etc/passwd

Я пытаюсь настроить libnss-ldap для обеспечения AD аутентификации моим серверам Debian Linux. Это хорошо работает, если пользователь существует локально, я хочу заставить его работать на Пользователей домена.

Вот мое/etc/ldap.conf содержание файла:

host $AD_IP
base ou=Users,dc=MY,dc=DOMAIN
uri ldap:///$AD_IP
ldap_version 3
binddn $user@MY.DOMAIN
bindpw $password
pam_filter objectclass=user

nss_base_passwd ou=Users,dc=MY,dc=DOMAIN
nss_map_objectclass posixAccount User
nss_map_objectclass shadowAccount User
nss_map_attribute uid sAMAccountName
nss_map_attribute uniqueMember Member
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_objectclass posixGroup Group
pam_login_attribute sAMAccountName
pam_filter objectclass=User
pam_password ad

Вот мой/etc/nsswitch.conf

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

Когда я ввожу команду

getent passwd

Вывод является локальным/etc/passwd файлом. Но tcpdump показывает, что запрос правильно выполнен к AD, и AD возвращает целый список пользователей. Я думаю, что данные получают командой getent, неправильно интерпретируются (nss_map_* неправильно настроенный?) и следовательно getent наконец возвращается, локальная информация (nsswitch сначала пробует ldap, затем разделяют).

Как исправить эту/etc/ldap.conf конфигурацию, чтобы заставить его работать?

Большое спасибо

0
задан 22 October 2014 в 17:13
1 ответ

Если вы можете, я порекомендую изменить способ аутентификации пользователей в вашей AD.

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

Я никогда не использовал AD, но уверен, что sssd справится это очень хорошо.

Первая ссылка, которую я получил от Google: https://blog.dlasley.net/2013/06/configure-linux-for-active-directory-authentication-with-sssd/

Я только начал использовать sssd для подключения к моему серверу OpenLDAP после того, как почти убил себя, делая патчи для libnss-ldap и libpam-ldap.

Еще одна библиотека, которая может сработать для вас, если по какой-то причине вы не можете заставить работать sssd. Это libnss-ldapd , это версия, основанная на libnss-ldap, и она до сих пор получает обновления, определенно лучше, чем libnss-ldap, а последняя версия (0.9) имеет практически все функции, которые есть в libnss-ldap.

Имейте в виду, что даже если sssd настроен правильно, когда вы используете getent passwd для получения всего списка, вы не получаете список пользователей из LDAP.

Для проверки вы можете использовать $ id < ldap_user> или $ getent passwd

getent только работает только с libnss-ldap или libnss-ldapd.

0
ответ дан 5 December 2019 в 13:05

Теги

Похожие вопросы