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/