Назад | Перейти на главную страницу

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

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

Вот содержимое моего файла /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, а затем compat).

Как исправить эту конфигурацию /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 <ldap_user>

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