Я пытаюсь настроить 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 конфигурацию, чтобы заставить его работать?
Большое спасибо
Если вы можете, я порекомендую изменить способ аутентификации пользователей в вашей 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.