啟用OpenLDAP的memberOf特性

2021-08-28 03:16:14 字數 2686 閱讀 3115

之前,我們已經通過 docker 的方式安裝部署了 openldap 服務。所以本文將主要介紹如何啟用 openldap 中非常有用的 memberof 特性。

很多場景下,我們需要快速的查詢某乙個使用者是屬於哪乙個或多個組的(member of)。memberof 正是提供了這樣的乙個功能:如果某個組中通過 member 屬性新增了乙個使用者,openldap 便會自動在該使用者上建立乙個 memberof 屬性,其值為該組的 dn。

遺憾的是,openldap 預設並不啟用這個特性,因此我們需要通過相關的配置開啟它。

建立乙個支援 memberof 的 docker 映象

我們的思路是以 osixia/openldap 為基準,通過 dockerfile 來擴充套件其啟動指令碼,來實現對 memberof 的支援。

首先,我們需要修改原映象中的 bootstrap/ldif/03-memberof.ldif 指令碼中的 olcmemberofgroupoc 和 olcmemberofmemberad 屬性,結果如下:

# load memberof module

dn: cn=module,cn=config

changetype: modify

add: olcmoduleload

olcmoduleload: memberof

# backend memberof overlay

dn: olcoverlay=memberof,olcdatabase=,cn=config

changetype: add

objectclass: olcoverlayconfig

objectclass: olcmemberof

olcoverlay: memberof

olcmemberofdangling: ignore

olcmemberofrefint: true

olcmemberofgroupoc: groupofnames

olcmemberofmemberad: member

olcmemberofmemberofad: memberof

from osixia/openldap

maintainer yanbin ma

env ldap_organisation="xinhua.io" ldap_domain="xinhua.io" ldap_admin_password="passw0rd"

add bootstrap /container/service/slapd/assets/config/bootstrap

然後通過如下命令,便可以構建出新的映象 myanbin/openldap:

$ docker build -t myanbin/openldap:0.1.0 .
最後執行此映象即可:

$ docker run --name ldap_core -p 389:389 -p 636:636 --detach myanbin/openldap
使用 ldif 檔案匯入使用者和組資料

首先我們匯入乙個使用者:

[root@localhost ~]# vim add_user.ldif

dn: uid=john,ou=people,dc=xinhua,dc=io

cn: john doe

givenname: john

sn: doe

uid: john

uidnumber: 5000

gidnumber: 1000

userpassword: m6xdjwa47cnw9gm5kxv1utqumoy=

homedirectory: /home/john

mail: [email protected]

objectclass: top

objectclass: posixaccount

objectclass: inetorgperson

[root@localhost ~]# ldapadd -x -h ldap: -d "cn=admin,dc=xinhua,dc=io" -w -f ./add_user.ldif

然後再匯入乙個組:

[root@localhost ~]# vim add_group.ldif

dn: cn=master,ou=group,dc=xinhua,dc=io

objectclass: groupofnames

cn: master

member: uid=john,ou=people,dc=xinhua,dc=io

[root@localhost ~]# ldapadd -x -h ldap: -d "cn=admin,dc=xinhua,dc=io" -w -f ./add_group.ldif
最後通過 ldapsearch 命令可以查詢到,該使用者屬性中已經增加了 memberof:

[root@localhost ~]# ldapsearch -x -h ldap: -b dc=xinhua,dc=io -d "cn=admin,dc=xinhua,dc=io" -w memberof

dn: uid=john,ou=people,dc=xinhua,dc=io

memberof: cn=master,ou=group,dc=xinhua,dc=io

最終,我們用上面的方式實現了對 memberof 的支援。

openldap的安裝備份與遷移

openldap的安裝備份與遷移 1 安裝 安裝方式上可以通過原始碼包和二進位製包,我這裡選擇的是通過centos 的yum 二進位製包安裝。安裝步驟十分簡單。如下 yum y install openldap db4 安裝完成後,cp配置檔案並啟動ldap應用 cp etc openldap db...

Ubuntu下OpenLDAP伺服器的部署步驟

1 安裝zlib wget configure shared make make install 2 安裝openssl 不要解除安裝系統自帶的openssl,否則很多服務都起不來 wget config shared 注意這裡是用.config 會安裝到 usr local ssl make ma...

openldap 映象同步慢的問題解決

今天發現線上openldap映象同步速度奇慢,線上環境總共13w條資料檢視映象同步幾乎沒有同步跡象,但檢查配置和連線都正常,日誌中可以看到映象對端的ip位址訪問,檢視cpu占用時可以看到有乙個slapd程序占用了一核cpu。正在疑惑時發現日誌中有一條索引未命中的資訊 bdb equality can...