Openldap

ldap_add 錯誤 (80) <olcModuleLoad> 處理程序以 1 退出

  • October 6, 2014

我正在嘗試按照教程設置基本 LDAD 伺服器 (OpenLDAP) 以進行客戶端身份驗證,但我被困在添加後端配置的步驟上。

我已經按照指定創建了我的 backend.ldif 文件,我正在嘗試添加它:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif

但我得到:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
   additional info: &lt;olcModuleLoad&gt; handler exited with 1

完整的 LDIF 是:

#Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=mydomain,dc=us
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=mydomain,dc=us
olcRootPW: dmx512
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=mydomain,dc=us" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=mydomain,dc=us" write by * read

有關如何排除故障的任何建議?我對 LDAP 伺服器一無所知,這是我的第一個。

更新:

我重新安裝了全新的 11.04 Server。

我做了以下事情:

hostname ldap.mycompany.com
nano /etc/hosts (set to ldap.mycompany.com)
nano /etc/hostname (set to ldap.mycompany.com)
sudo apt-get install slapd ldap-utils

我嘗試載入第一個模式:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif

我得到:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
   additional info: olcAttributeTypes: Duplicate attributeType: "0.9.2342.19200300.100.1.2"

我嘗試了下面建議的命令:

root@ldap:~# cat /etc/ldap/slapd.d/cn\=config/cn\=module\{0\}.ldif
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
structuralObjectClass: olcModuleList
entryUUID: 3bedbe64-e4b2-1030-832a-17900c7b3644
creatorsName: cn=config
createTimestamp: 20120206020131Z
entryCSN: 20120206020131.785958Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20120206020131Z

但是這次它沒有對模組進行編譯,它抱怨“重複的屬性類型”。

所以我需要一個顯示“顯示載入的屬性類型”的命令來查看“餘弦”是否已經在列表中?

好的,我假設:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

是不必要的,因為它們都產生相同的錯誤。

所以我繼續添加 ~/backend.ldif。我從頂部刪除了載入模組行,因為模組似乎已經載入。

現在,當我嘗試添加時:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif

我得到:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcDatabase=hdb,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
   additional info: &lt;olcSuffix&gt; namingContext "dc=mycompany,dc=us" already served by a preceding hdb database

這是沒有意義的,因為這是電腦上唯一的數據庫,這是我添加到其中的第一個條目。

錯誤消息表明該back_hdb模組已包含在配置中。您可以使用命令驗證這一點

cat /etc/ldap/slapd.d/cn\=config/cn\=module\{0\}.ldif

如果這包括類似於以下的行,則它已經包括在內:

olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb 

如果是這種情況,只需刪除前六行,backend.ldif然後重試。

如果你想從頭開始,你可以使用命令

apt-get purge slapd ldap-utils

擺脫包括所有數據文件的完整 ldap 安裝。

之後,您需要使用相應的命令重新安裝 OpenLDAP

apt-get install slapd ldap-utils

順便說一句,我只是按照本教程(同時使用他們腳本中的所有預設值),這在新創建的 Lucid VM 上執行良好。


編輯

好的,在您的另一篇文章中,您談到了 10.04。事實上,slapd與 10.04 相比,11.04 中的自動配置要好得多。它為您做的是教程中有關架構文件和 backend.ldif 的所有內容,甚至是前端的一部分:您可以從 fronted.ldif 中刪除以下行並嘗試從那裡繼續:

# Create top-level object in domain
dn: dc=tuxnetworks,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Tuxnetworks
dc: Tuxnetworks
description: LDAP Server 

# Admin user.
dn: cn=admin,dc=tuxnetworks,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: mypassword 

一些進一步的提示:OpenLDAP ( cn=config) 的後端配置只不過是一個文件系統結構中的 LDIF 文件的集合,相當於 LDAP 結構。您可以在 中自行瀏覽/etc/ldap/slapd.d。10.04 有最低限度的slapd工作,而 11.04 準備好一切,以便您可以立即開始。

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