1. 程式人生 > >ldap 使用者組和使用者(4)

ldap 使用者組和使用者(4)

 

 

 

Posixgroup使用者組屬性

  預設情況下openldap的使用者組屬性是Posixgroup,Posixgroup使用者組屬性和使用者沒有實際的對應關係。如果我們一定要把Posixgroup和user對應起來的話,就需要單獨把使用者設定到Posixgroup中。

新增使用者組

[[email protected] ~]# cat group.ldif 
dn: cn=yunweizu,ou=Group,dc=test,dc=com
objectClass: posixGroup
objectClass: top
cn: yunweizu
gidNumber: 
10002 description: 運維組 [[email protected] ~]# 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中新增相關的配置

[[email protected] ~]# 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 [[email protected] ~]# 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" [[email protected] ~]# vim refint1.ldif dn: cn=module{0},cn=config add: olcmoduleload olcmoduleload: refint "refint1.ldif" [New] 3L, 68C written [[email protected] ~]# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif modifying entry "cn=module{0},cn=config" [[email protected] ~]# 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 [[email protected] ~]# 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" [[email protected] ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif adding new entry "olcOverlay={1}refint,olcDatabase={2}hdb,cn=config"

匯入使用者組

[[email protected] ~]# 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                                                                                                                        
[[email protected] ~]# 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使用者組屬性的組,使用者組與使用者可以直接進行關聯。

[[email protected] ~]# 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/