一、前言
默认情况下OpenLDAP的用户组属性是posixGroup,posixGroup用户组和用户没有实际的对应关系。如果需要把posixGroup和user关联起来则需要将用户添加到对应的组中。 通过如上配置可以满足大部分业务场景,但是如果需要通过用户组来查找用户的话(比如:nginx
与openldap集成过滤用户组时、proftpd
与openldap集成过滤用户组时、openvpn
与openldap集成过滤用户组时、gitlab
与openldap集成过滤用户组时),posixGroup用户组属性,是无法满足要求的。此时需要使用OpenLDAP的groupOfUniqueNames用户组属性。这里主要介绍如何为OpenLDAP启用MemberOf。
二、环境
OpenLDAP版本为2.4.44
三、实现步骤
3.1 查看openldap的数据库信息
1 | [admin@localhost ~]$ ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn |
或者直接查看数据库目录
1 | [admin@localhost ~]$ sudo ls /etc/openldap/slapd.d/cn=config/ |
得到的结果大概如下
cn=schema olcDatabase={0}config.ldif olcDatabase={1}monitor.ldif
cn=schema.ldif olcDatabase={-1}frontend.ldif olcDatabase={2}hdb.ldif
其中有一个带什么db.ldif
的就是你最终需要修改的数据库文件,我这里是hdb.ldif
,你的可能是db.ldif
,还有人是bdb.ldif
,不管什么db
,总之要改的是一个叫db
的文件就对了。
3.2 加载memberof模块
添加模块ldif文件
1 | [admin@localhost ~]$ vim add_module_group.ldif |
1 | [admin@localhost ~]$ vim add_group_objectClass.ldif |
groupOfUniqueNames #由centos 6 的
groupOfNames
变更为了centos 7的groupOfUniqueNames
uniqueMember #centos 6用户的属性的名称从member
变成了uniqueMember
将ldif文件写入openldap,使用root权限执行
1 | [admin@localhost ~]$ sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add_module_group.ldif |
3.3 添加主机架构和相应的主机组
添加ldif文件
1 | [admin@localhost ~]$ vim add_unique_group.ldif |
将ldif文件写入openldap
1 | [admin@localhost ~]$ ldapadd -x -D cn=admin,dc=sys,dc=com -W -f add_unique_grou.ldif |
配置完成后再Openldap服务端执行下述语句应能正常查询到相应的memberOf属性
1 | [admin@localhost ~]$ ldapsearch -x -LLL -H ldap:/// -D cn=admin,dc=sys,dc=com -W -b uid=ops1,ou=ops,ou=users,dc=sys,dc=com memberOf |