1、在Openldap服务器端上加载memberof模块
[root@node3 ~]# vim add_module_group.ldif
dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModulePath: /usr/lib64/openldap
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: memberof.la
[root@node3 ~]# vim add_group_objectClass.ldif
dn: olcOverlay=memberof,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfUniqueNames #由centos 6 的groupOfNames 变更为了centos 7的groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember #centos 6用户的属性的名称从member变成了uniqueMember
olcMemberOfMemberOfAD: memberOf
[root@node3 ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add_module_group.ldif
[root@node3 ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add_group_objectClass.ldif
2、添加主机架构及添加相应的主机组
[root@node3 ~]# vim add_unique_group.ldif
dn: ou=host,dc=ldaptest,dc=com,dc=cn
ou: host
objectClass: organizationalUnit
objectClass: top
dn: cn=db,ou=host,dc=ldaptest,dc=com,dc=cn
objectClass: top
objectClass: groupOfUniqueNames
cn: db
uniqueMember: uid=devin,ou=people,dc=ldaptest,dc=com,dc=cn
dn: cn=tomcat,ou=host,dc=ldaptest,dc=com,dc=cn
objectClass: top
objectClass: groupOfUniqueNames
cn: tomcat
uniqueMember: uid=charles,ou=people,dc=ldaptest,dc=com,dc=cn
uniqueMember: uid=tyler,ou=people,dc=ldaptest,dc=com,dc=cn
[root@node3 ~]# ldapadd -x -D cn=admin,dc=ldaptest,dc=com,dc=cn -W -f add_unique_group.ldif
配置完成后再Openldap服务端执行下述语句应能正常查询到相应的memberOf属性。
[root@node3 ~]# ldapsearch -x -LLL -H ldap:/// -D cn=admin,dc=ldaptest,dc=com,dc=cn -W -b uid=charles,ou=people,dc=ldaptest,dc=com,dc=cn memberOf
Enter LDAP Password:
dn: uid=charles,ou=people,dc=ldaptest,dc=com,dc=cn
memberOf: cn=tomcat,ou=host,dc=ldaptest,dc=com,dc=cn
3、配置Centos 7 ldap客户端仅允许指定的主机组用户登录访问
#在/etc/nslcd.conf文件末尾添加下述过滤条件,表示匹配主机组db下的用户
[root@localhost ~]# vim /etc/nslcd.conf
filter passwd (memberOf=cn=db,ou=host,dc=ldaptest,dc=com,dc=cn)
[root@localhost ~]# systemctl restart nslcd
重启完nslcd服务后,此时该客户端仅能允许获取到主机组db 下的用户信息,因此仅允许该部分用户登录到该系统。