Цель: аутентифицироваться в CentOS7 с помощью LDAP
Проблемы
1) Пользователь не найден
calling ldap_search_ext with
[(&(uid=bla)(objectclass=posixAccount)(uid=*)(&(uidNumber=*)(!(uidNumber=0))))][dc=my-domain,dc=com]
2) объектный класс posixAccount не найден
Вопросы
posixAccount
?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
который алгоритмически сопоставляет идентификаторы безопасности с идентификаторами.