ldap_add错误(80)<olcModuleLoad>处理程序以1退出


8

我正在尝试按照教程设置用于身份验证的基本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: <olcModuleLoad> 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

但是它这次没有对模块进行编译,它抱怨“ Duplicate attributeType”。

因此,我需要一个显示“显示加载的属性类型”的命令,以查看“余弦”是否已在列表中?

好的,我要假设:

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: <olcSuffix> namingContext "dc=mycompany,dc=us" already served by a preceding hdb database

这是没有意义的,因为这是计算机上唯一的数据库,这是我要添加的第一项。

Answers:


6

错误消息表明该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)的后端配置只不过是与LDAP结构等效的文件系统结构中的LDIF文件的集合。您可以在中自行浏览/etc/ldap/slapd.d。10.04可以slapd正常工作,而11.04已准备了一切,因此您可以立即开始。


我将尝试再次做整个事情。我正在11.04 VM上执行此操作。新版本中可能存在不兼容的地方吗?还是11.04随附的OpenLDAP版本已经加载了该模块,而10.04没有?因此,如果我安装ldap并拧紧它,运行“ apt-get purge slapd ldap-utils”将与我以全新安装开始时一样吗?它不会在任何地方留下任何“垃圾”吗?
尼克

好的,我尝试重新安装并尝试加载“余弦”模式时得到“ olcAttributeTypes:Duplicate attributeType”。请参阅上面的完整消息。
尼克

查看我的编辑,对此发表评论已久了。
斯文

通过使用10.04并再次遵循本教程,我可以使用LDAP。我将其标记为已解决,因为它确实回答了标题问题。谢谢!
尼克

1

将.la添加到back_hdb的末尾

LDIF现在应该阅读

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

# 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

进行解释:http : //ubuntuforums.org/archive/index.php/t-1594138.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.