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

Как пройти аутентификацию в CentOS7 с помощью LDAP, если объектный класс posixAccount недоступен?

Цель: аутентифицироваться в CentOS7 с помощью LDAP

Проблемы

1) Пользователь не найден

calling ldap_search_ext with 
[(&(uid=bla)(objectclass=posixAccount)(uid=*)(&(uidNumber=*)(!(uidNumber=0))))][dc=my-domain,dc=com]

2) объектный класс posixAccount не найден

Вопросы

  1. Как добавить объектный класс posixAccount?
  2. Если этот тип objectClass не может быть найден, как изменить поиск sssd разрешить этому программному обеспечению найти пользователя в OpenLDAP и разрешить аутентификацию в CentOS7?

Всеобъемлющий

1) sssd установлены

2) аутентификация ldap с использованием sssd, настроенного на CentOS7

[root@controller ~]# authconfig --enablesssd --enablesssdauth --enablelocauthorize --update

3) включена отладка sssd

/etc/sssd/sssd.conf

[domain/default]

autofs_provider = ldap
cache_credentials = True
krb5_realm = #
ldap_search_base = dc=my-domain,dc=com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://<ipaddress>/
ldap_tls_cacertdir = /etc/openldap/cacerts

debug_level = 9

4) Тестовый вход с использованием LDAP

[root@controller ~]# id Manager
id: Manager: no such user

5) Отладка

/var/log/sssd/sssd_default.log

(Thu Jul  2 22:31:46 2015) [sssd[be[default]]] [sdap_search_user_next_base] (0x04
00): Searching for users with base [dc=my-domain,dc=com]
(Thu Jul  2 22:31:46 2015) [sssd[be[default]]] [sdap_print_server] (0x2000): Sear
ching <ipaddress>
(Thu Jul  2 22:31:46 2015) [sssd[be[default]]] [sdap_get_generic_ext_step] (0x040
0): calling ldap_search_ext with [(&(uid=bla)(objectclass=posixAccount)(uid=*)(&(
uidNumber=*)(!(uidNumber=0))))][dc=my-domain,dc=com].
(Thu Jul  2 22:31:46 2015) [sssd[be[default]]] [sdap_get_generic_ext_step] (0x100
0): Requesting attrs: [objectClass]

6) Невозможно добавить posixAccount objectClass

На самом деле вы не сказали, какой у вас был сервер LDAP или как выглядит пользователь в вашем каталоге LDAP, но я постараюсь ответить как можно лучше.

На данный момент SSSD обслуживает только учетные записи POSIX. Это означает, что пользовательский объект на стороне сервера либо должен иметь имя и числовые идентификаторы, либо числовые идентификаторы должны быть выведены из идентификатора безопасности Windows.

Фактический объектный класс на самом деле не имеет значения. Все, что вам нужно, это настроить sssd.conf с использованием объектного класса, используемого вашим сервером, и атрибута, содержащего идентификатор. Видеть man sssd-ldap для получения дополнительной информации, но два варианта конфигурации, которые могут вас заинтересовать, это ldap_user_uid_number и ldap_user_object_class.

Если сервер является MSAD, в идеале вы должны использовать id_provider=ad который алгоритмически сопоставляет идентификаторы безопасности с идентификаторами.