Аутентификация клиента LDAP с использованием SSSD: проблема с группами

Мне удалось настроить 389 LDAP-сервер и аутентификацию клиента SSSD. Однако всякий раз, когда я вхожу с помощью пользователя ldap после каждого входа, отображается сообщение

ttt@dsl's password: 
Last login: Thu Dec  6 12:52:06 2012
id: cannot find name for group ID 6006

Я пробовал с несколькими разными пользователями и несколькими типами. Я использую Centos 6 на стороне сервера и клиента. Тень getent не возвращает пользователей ldap, и Redhat отклонил этот запрос функции. https://bugzilla.redhat.com/show_bug.cgi?id=751291.

Или я должен вернуться к nss_ldap/pam_ldap, но я не могу получить кеширование паролей, которое предоставляет sssd.

Обновить:

root@dsl etc]# cat /etc/sssd/sssd.conf 
[domain/default]
ldap_tls_reqcert = never
ldap_id_use_start_tls = True
cache_credentials = True
ldap_search_base = dc=ma,dc=net
#krb5_realm = EXAMPLE.COM
#krb5_server = kerberos.example.com
ldap_group_member = uniquemember
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldaps://ldap.ma.net
ldap_tls_cacertdir = /etc/openldap/cacerts
krb5_realm = EXAMPLE.COM
krb5_server = kerberos.example.com
enumerate = false
[sssd]
services = nss, pam
config_file_version = 2

#domains = LDAP
domains = 
[nss]
filter_users = root,ldap,named,avahi,haldaemon,dbus,radiusd,news,nscd
[pam]
reconnection_retries = 3
offline_credentials_expiration = 2
offline_failed_login_attempts = 3
offline_failed_login_delay = 5
[sudo]

[autofs]

[ssh]

[root@dsl etc]# 

После входа в систему как пользователь я могу успешно выполнить команду id, все еще задаваясь вопросом, почему она всегда говорит, что нет такой группы.

[root@ldap02 ~]# ssh ttt@dsl
ttt@dsl's password: 
Last login: Thu Dec  6 13:18:16 2012 from 10.2.3.69
id: cannot find name for group ID 6006
[ttt@dsl ~]$ id ttt
uid=6006(ttt) gid=6006 groups=6006

Также

[root@dsl ~]# groups ttt
ttt : groups: cannot find name for group ID 6006
6006
[root@dsl ~]# groups ttt

2 ответа

Решение

Наконец я смог ее решить. Эта статья мне очень помогла.

Вот что я сделал. На стороне SSSD все было настроено нормально, однако я не настроил сторону LDAP. Чтобы пользователи Unix (пользователи posix) работали правильно, мы должны создать группы posix и назначить соответствующие значения.

Для каждого пользователя, помимо назначения идентификатора группы posix и идентификатора пользователя, вам необходимо также присоединить их к группе posix. Вы также можете добавить это из консоли администратора 389. При создании группы просто нажмите на раздел "группа posix". Или из командной строки используйте эту статью

В моем случае были те же симптомы, но причина была более запутанной. Я следовал этому руководству, в котором предлагается настроить элементы управления доступом к LDAP. Чтобы гарантировать, что никто не сможет прочитать (зашифрованные) пароли с сервера LDAP, но при этом разрешить пользователям редактировать некоторые из своих собственных выбранных атрибутов (например, собственный пароль и фотографию). , импортировав следующий файл LDIF:

      dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=cn,givenName,sn,userPassword,shadowLastChange,mail,loginShell,photo by self write by anonymous auth by dn.base="cn=Manager,dc=example,dc=org" write by * none
olcAccess: {1}to * by self read by dn.base="cn=Manager,dc=example,dc=org" write by * read

Когда sssd ищет идентификатор группы в LDAP, он делает анонимный поисковый запрос, используя следующий фильтр (извлеченный из журналов sssd, версия 1.16.5):

      (&(memberuid=test)(objectClass=posixGroup)(cn=*)(&(gidNumber=*)(!(gidNumber=0))))

Для этого поискового запроса требуется доступ для чтения к атрибуту, но анонимные пользователи имеют толькоauthдоступ, поэтому поиск не удался и sssd не может знать идентификатор группы. То же самое происходит с атрибутом в другом поисковом запросе, поэтому зарегистрированные пользователи LDAP имеют оболочку по умолчанию (это csh вместо bash). Исправлено: доступ для чтения (вместо аутентификации) был установлен наcnиloginShellатрибуты в базе данных LDAP (просто удалите их из первогоattrsлиния):

      dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=givenName,sn,userPassword,shadowLastChange,mail,photo by self write by anonymous auth by dn.base="cn=Manager,dc=example,dc=org" write by * none
olcAccess: {1}to * by self read by dn.base="cn=Manager,dc=example,dc=org" write by * read

Возможно, другие атрибуты (например, заданное имя) также следует удалить из первыхattrлиния.

Другие вопросы по тегам