如何在 Debian 5 上使用動態 config=cn 後端為 OpenLDAP 安裝新架構?
我正在從另一台伺服器導入 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
操作。我不知道為什麼,但是在配置
slapd
debian 包時,它允許我為我的 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