在一段时间里,我一直在研究LDAP集成。 现在,configuration几乎所有我需要的东西之后,我想出了最后一道墙:需要使用从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,所以有一个连接)。
我要粘贴主要的configuration文件,我想我把所有的东西放在正确的地方。 在网站之间冲浪,我读了不build议同时configurationsssd和nsswitch,比如configurationldap和sss用于从服务器“分析”所有需要的数据,这可能是一个服务器或类似的东西那。 尽pipe如此,我还是写了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
正如你所看到的,我正在问关于passwd,shadow和groups的问题。 结合这个configuration,我也有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 。
我说,因为我发现在networking上,我应该改变ldap_schema = rfc2307bis到ldap_schema = rfc2307但它仍然无法正常工作。
此外,还有一些我以前试过但没有成功的评论。
完成后,我要粘贴nslcd.conf 。 在这里,我只是遵循这个教程: https : //arthurdejong.org/nss-pam-ldapd/setup ,所以我的configuration文件,因为它加上以下几行:
# This comment prevents repeated auto-migration of settings. uri ldap://ldap.eibind.iss/ base dc=eibind,dc=iss uid nslcd gid nslcd
我必须错过一些东西,一些价值,一些愚蠢的configuration。 大概我花了3-4天的时间看这个,所以任何帮助都非常感谢。
提前致谢。
我很困惑,你的组织使用“memberuid:$ username”,这是RFC2307,所以为什么dooes你的configuration指定rfc2307bis和uniqueMember?
我会build议使用rfc2307(这是默认设置),如果这样做不起作用,请启动debugging并查看对LDAP服务器所做的查询。
当您更换默认值时:
ldap_schema = rfc2307
同
ldap_schema = rfc2307bis
在sssd.conf文件中,您需要遵循SSSD FAQ中的说明:
SSSD支持三种LDAP模式types:RFC 2307,RFC 2307bis和IPA(最后是RFC 2307bis的扩展,包括memberOf反向链接)。
默认情况下,SSSD将使用更常见的RFC 2307模式。 RFC 2307和RFC 2307bis之间的差异是组成员身份被存储在LDAP服务器中的方式。 在RFC 2307服务器中,组成员被存储为包含作为成员的用户的名称的多值属性
memberuid。 在RFC2307bis服务器中,组成员被存储为多值属性成员(或有时是唯一成员),其中包含属于该组成员的用户或组的DN。 RFC2307bis也允许维护嵌套组。所以当你遇到这种情况时,首先要尝试设置
ldap_schema = rfc2307bis,删除/var/lib/sss/db/cache_DOMAINNAME.ldb并重新启动SSSD。 如果仍然不起作用,请添加ldap_group_member = uniqueMember,删除caching并重新启动一次。 如果这仍然不起作用,是时候提交一个错误。