Debian

如何在 Debian 5 上使用動態 config=cn 後端為 OpenLDAP 安裝新架構?

  • March 16, 2018

我正在從另一台伺服器導入 OpenLDAP 數據庫,在導入時,一些使用者遇到了一些錯誤,問題是mozillaAbPersonAlpha不是有效的objectClass.

#!ERROR [LDAP Error Code 21 - objectClass: value #3 invalid per syntax]
...
dn: uid=somedude,cn=Whatever,dc=test,dc=com
sn: Some Dude
givenName: Dude
mail: dude@test.com
mozillaCustom1: Engineering
l: Somewhere
objectClass: inetOrgPerson
objectClass: top
objectClass: person
objectClass: mozillaAbPersonAlpha
uid: somedude
cn: Some Dude

AFAICT 似乎我安裝的 OpenLDAP 缺少mozillaABPersonAlpha的模式。

但是如何安裝這個架構?


編輯:伺服器正在使用新的配置後端,所以沒有任何slapd.conf文件。取而代之的是一個/etc/slapd.d/具有奇怪目錄命名的目錄(例如/etc/slapd.d/cn=config/)。

在這種情況下如何添加新架構?

我正在回答我自己的問題,因為我想知道如何在使用新slapd.d/dynamic/cn=config後端時解決問題,並且我不想回到該slapd.conf方法。(幾乎沒有人這樣做,AFAICT)

當我嘗試使用 `ldapadd 添加新架構時,我總是收到以下錯誤:

ldapadd -H ldap://whatever.test.com -D "cn=admin,dc=whatever,dc=test,dc=com" -x -W -f mozillaabpersonalpha.ldif
ldap_add: Insufficient access (50)

所以BindDN我使用的沒有那個權限。我需要設置一個 ACL 或使用該rootDN操作。

我不知道為什麼,但是在配置slapddebian 包時,它允許我為我的 DIT 創建一個管理員帳戶,但它沒有提及rootDN. 經過一番瀏覽,我發現了這個部落格,它解釋瞭如何rootDN在使用cn=config模式時設置密碼。

因此,編輯了文件/etc/ldap/slapd.d/cn=config/olcDatabase\=\{0\}config.ldif並添加了以下內容:

olcRootDN: cn=admin,cn=config
olcRootPW: mypassword

我必須重新啟動 slapd 才能使更改生效(這不是必需的,但是…)。為了測試它,我執行了以下命令:

ldapwhoami -H ldap://whatever.test.com -D "cn=admin,cn=config" -x -w mypassword

它奏效了!下一步是mozillaAbPersonAlpha使用以下命令以 ldif 格式載入模式ldapadd

ldapadd -H ldap://whatever.test.com -D "cn=admin,cn=config" -x -w mypassword -f mozillaabpersonalpha.ldif

響應成功

adding new entry "cn=mozillaabpersonalpha,cn=schema,cn=config"

mozillaABPersonAlpha最後,現在可以添加一個依賴於模式的使用者。例如,該文件newuser.ldif具有以下內容:

dn: uid=somedude,cn=Whatever,dc=test,dc=com
sn: Some Dude
givenName: Dude
mail: dude@test.com
mozillaCustom1: Engineering
l: Somewhere
objectClass: inetOrgPerson
objectClass: top
objectClass: person
objectClass: mozillaAbPersonAlpha
uid: somedude
cn: Some Dude

並將其添加到新目錄(不使用rootDN帳戶)現在可以工作:

ldapadd -H ldap://whatever.test.com -D "cn=admin,dc=whatever,dc=test,dc=com" -x -W -f usertest.ldif 
Enter LDAP Password: 
adding new entry "uid=somedude,cn=SomeGroup,cn=whatever,dc=test,dc=com

引用自:https://serverfault.com/questions/272125