Команда id не показывает вторичные группы

В течение нескольких дней я работал над интеграцией LDAP. Теперь, после настройки почти всего, что мне было нужно, я подошел к этой последней стене: необходимость использования вторичных групп, которые взяты с сервера LDAP.

Поведение:

[root@sr-servicesLin ~]# id hmr
uid=2956(hmr) gid=10000(ldapusers) groups=10000(ldapusers)

[root@sr-servicesLin ~]# getent group repo
repo:*:25958:

[root@sr-servicesLin ~]# groups hmr
hmr : ldapusers

Содержимое группы репо (это группа LDAP):

[root@sr-dns ~]# ldapsearch -x -H ldaps://ldap.eibind.iss -b "dc=eibind,dc=iss" "(&(objectclass=posixGroup)(cn=repo)(gidNumber=*))"
# extended LDIF
#
# LDAPv3
# base <dc=eibind,dc=iss> with scope subtree
# filter: (&(objectclass=posixGroup)(cn=repo)(gidNumber=*))
# requesting: ALL
#

# repo, Groups, eibind.iss
dn: cn=repo,ou=Groups,dc=eibind,dc=iss
objectClass: posixGroup
objectClass: top
cn: repo
memberUid: hmr
memberUid: jcontreras
memberUid: hectoriss
gidNumber: 25958

# search result
search: 2
result: 0 Success

Сценарий:

ОС: Centos 6.7

Пакеты:
· LDAP работает с SSL
· Sssd установлен
· Nss-pam-ldapd

Проблема в:

Когда я использую id Команда Я не получаю второстепенные группы каждого пользователя, только основную (которая идет от LDAP, поэтому есть соединение).

Я собираюсь вставить основные файлы конфигурации, я думаю, что я все расставил по местам. Просматривая сайты, я прочитал, что не рекомендуется одновременно настраивать sssd и nsswitch, например configure ldap а также sss для "разбора" всех желаемых данных с сервера, чтобы это могло быть беспорядком для сервера или что-то в этом роде. Несмотря на это, я написал ldap и sss в качестве источников данных.

nsswitch.conf

#
# /etc/nsswitch.conf
#

passwd:     files ldap sss
shadow:     files ldap sss
group:      files ldap sss

#hosts:     db files nisplus nis dns
hosts:      files dns

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files ldap sss

netgroup:   files ldap sss

publickey:  nisplus

automount:  files ldap sss
aliases:    files ldap nisplus

Как видите, я прошу ldap и sss (sssd) о passwd, shadow и groups. В сочетании с этим конфигом у меня также есть файл sssd.conf, который выглядит следующим образом:

sssd.conf

[sssd]
config_file_version = 2
services = nss, pam, autofs
domains = default

[nss]
filter_users = root,ldap,named,avahi,haldaemon,dbus,radiusd,news,nscd

[pam]

[domain/default]
ldap_tls_reqcert = allow
auth_provider = ldap
ldap_schema = rfc2307bis
krb5_realm = eibind.iss
ldap_search_base = dc=eibind,dc=iss
ldap_group_member = uniqueMember
id_provider = ldap
ldap_id_use_start_tls = True
chpass_provider = ldap
ldap_uri = ldaps://ldap.eibind.iss/

#ldap_user_object_class = user
#ldap_group_object_class = group

#ldap_group_search_base = OU=Groups,DC=eibind,DC=iss
#ldap_group_search_scope = one
#ldap_group_object_class = group

ldap_chpass_uri = ldaps://ldap.eibind.iss/
krb5_kdcip = ldap.eibind.iss
cache_credentials = True
ldap_tls_cacertdir = /etc/openldap/cacerts
entry_cache_timeout = 600
ldap_network_timeout = 3
krb5_server = ldap.eibind.iss
autofs_provider = ldap
[autofs]

Здесь мы видим, что я использую ldap_schema = rfc2307bis а также ldap_group_member = uniqueMember,

Я говорю это, потому что я нашел в сети, что я должен изменить ldap_schema = rfc2307bis в ldap_schema = rfc2307 но это все равно не работает.

Кроме того, есть некоторые закомментированные строки, которые я ранее пробовал, но безуспешно.

Чтобы закончить, я собираюсь вставить nslcd.conf. Здесь я просто следовал этому руководству: https://arthurdejong.org/nss-pam-ldapd/setup, так что мой конфигурационный файл такой, как он есть, плюс следующие строки:

# This comment prevents repeated auto-migration of settings.
uri ldap://ldap.eibind.iss/
base dc=eibind,dc=iss
uid nslcd
gid nslcd

Я должен что-то упустить, какое-то значение, какой-то тупой конфиг. Вероятно, я провожу около 3-4 дней, глядя на это, поэтому любая помощь с очень благодарна.

Заранее спасибо.

2 ответа

Решение

Я в замешательстве, ваши группы используют "memberuid: $username", то есть RFC2307, так почему же ваша конфигурация указывает rfc2307bis и uniqueMember?

Я бы предложил использовать rfc2307 (который используется по умолчанию), и если это не сработает, включите отладку и посмотрите, какие запросы выполняются к серверу LDAP.

При замене по умолчанию:

ldap_schema = rfc2307

с

ldap_schema = rfc2307bis

в вашем sssd.conf Файл, который вы должны следовать инструкциям из SSSD FAQ:

SSSD поддерживает три типа схем LDAP: RFC 2307, RFC 2307bis и IPA (последний является расширением RFC 2307bis, включая обратные ссылки memberOf).

По умолчанию SSSD будет использовать более распространенную схему RFC 2307. Разница между RFC 2307 и RFC 2307bis заключается в том, каким образом членство в группах хранится на сервере LDAP. На сервере RFC 2307 члены группы сохраняются как многозначный атрибут memberuid который содержит имена пользователей, которые являются членами. На сервере RFC2307bis члены группы сохраняются как член многозначного атрибута (или иногда uniqueMember), который содержит DN пользователя или группы, которая является членом этой группы. RFC2307bis также позволяет поддерживать вложенные группы.

Поэтому первое, что нужно попробовать, когда вы попали в эту ситуацию, это попробовать ldap_schema = rfc2307bis, удаляя /var/lib/sss/db/cache_DOMAINNAME.ldb и перезапуск SSSD. Если это все еще не работает, добавьте ldap_group_member = uniqueMember, удалите кеш и перезапустите еще раз. Если это все еще не работает, пришло время подать ошибку.

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