ldap 用户组和用户(4)
Posixgroup用户组属性
默认情况下openldap的用户组属性是Posixgroup,Posixgroup用户组属性和用户没有实际的对应关系。如果我们一定要把Posixgroup和user对应起来的话,就需要单独把用户设置到Posixgroup中。
添加用户组
[root@zabbix1 ~]# cat group.ldif dn: cn=yunweizu,ou=Group,dc=test,dc=com objectClass: posixGroup objectClass: top cn: yunweizu gidNumber: 10002 description: 运维组 [root@zabbix1 ~]# ldapadd -x -w "1234qwer" -D "cn=root,dc=test,dc=com" -f /root/group.ldif adding new entry "cn=yunweizu,ou=Group,dc=test,dc=com"
现在虽然添加了组但是还没有关联起来需要在组里加一个值
以上设置基本可以满足大部分业务场景的需要,但是如果我们需要根据用户组来过滤用户的话,Posixgroup用户组属性,是无法满足需要的。比如:nginx与openldap集成过滤用户组时、proftpd与openldap集成过滤用户组时、openvpn与openldap集成过滤用户组时、gitlab与openldap集成过滤用户组时,Posixgroup用户组属性是无法满足的。
此时我们就需要使用groupOfUniqueNames用户组属性。
GroupOfUniqueNames用户组属性
groupOfUniqueNames用户组属性,是可以根据用户组过滤用户,这个过滤是唯一的。
要配置groupOfUniqueNames用户组属性,我们需要在openldap中添加相关的配置
[root@zabbix1 ~]# cat memberof_config.ldif dn: cn=module,cn=config : module ▽bjectClass: olcModuleList olcModuleLoad: memberof olcModulePath: /usr/lib64/openldap dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config objectClass: olcConfig objectClass: olcMemberOf objectClass: olcOverlayConfig objectClass: top olcOverlay: memberof olcMemberOfDangling: ignore olcMemberOfRefInt: TRUE olcMemberOfGroupOC: groupOfNames olcMemberOfMemberAD: member olcMemberOfMemberOfAD: memberOf [root@zabbix1 ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_config.ldif adding new entry "cn=module,cn=config" adding new entry "olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config" [root@zabbix1 ~]# vim refint1.ldif dn: cn=module{0},cn=config add: olcmoduleload olcmoduleload: refint "refint1.ldif" [New] 3L, 68C written [root@zabbix1 ~]# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif modifying entry "cn=module{0},cn=config" [root@zabbix1 ~]# vim refint2.ldif dn: olcOverlay={1}refint,olcDatabase={2}hdb,cn=config objectClass: olcConfig objectClass: olcOverlayConfig objectClass: olcRefintConfig objectClass: top olcOverlay: {1}refint olcRefintAttribute: memberof member manager owner "refint2.ldif" [New] 7L, 225C written [root@zabbix1 ~]# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif ldapmodify: modify operation type is missing at line 2, entry "olcOverlay={1}refint,olcDatabase={2}hdb,cn=config" [root@zabbix1 ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif adding new entry "olcOverlay={1}refint,olcDatabase={2}hdb,cn=config"
导入用户组
[root@zabbix1 ~]# vim group1.ldif dn: cn=yunweizu,ou=Group,dc=test,dc=com objectClass: groupOfUniqueNames objectClass: top cn: yunweizu description: 运维组 uniqueMember: uid=test,ou=People,dc=test,dc=com ~ "group1.ldif" 6L, 173C written [root@zabbix1 ~]# ldapadd -x -w "1234qwer" -D "cn=root,dc=test,dc=com" -f /root/group1.ldif adding new entry "cn=yunweizu,ou=Group,dc=test,dc=com"
通过上图,我们可以很明显的看出groupOfUniqueNames用户组属性的成员属性为uniqueMember。
如果此时把用户加入到该用户组后,我们是可以在用户组中直接看到该用户的。
也就说使用groupOfUniqueNames用户组属性的组,用户组与用户可以直接进行关联。
[root@zabbix1 ~]# ldapsearch -x -LLL -H ldap://127.0.0.1 -x -D cn=root,dc=test,dc=com -w "1234qwer" -b uid=test,ou=People,dc=test,dc=com dn uniqueMember dn: uid=test,ou=People,dc=test,dc=com
通过上图,我们可以很明显的看出groupOfUniqueNames用户组属性已经配置完毕。
这样第三方在调用openldap进行组过滤,就可以直接使用了。
参考网站
https://www.ilanni.com/?p=14127
https://www.ilanni.com/?p=13775
https://www.cnblogs.com/lemon-le/p/6266921.html
https://www.openldap.org/doc/admin24/