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

我试图按照这个教程设置一个基本的LDAD服务器(OpenLDAP)进行cleint身份validation,但是我被困在添加后端configuration的步骤上。

我已经创build了我的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 (eg, 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 

有关如何解决问题的任何build议? 我对LDAP服务器一无所知,这是我的第一个。

更新:

我已经开始了全新安装的11.04服务器。

我做了以下几件事:

 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 (eg, implementation specific) error (80) additional info: olcAttributeTypes: Duplicate attributeType: "0.9.2342.19200300.100.1.2" 

我尝试了下面build议的命令:

 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 

但是这次它并没有模块化,而是抱怨一个“重复的属性types”(Duplicate attributeType)。

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

好的,我要假设:

 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 (eg, implementation specific) error (80) additional info: <olcSuffix> namingContext "dc=mycompany,dc=us" already served by a preceding hdb database 

这是没有意义的,因为这是计算机上唯一的数据库,这是我添加到它的第一个条目。

错误消息表明back_hdb模块已经包含在configuration中。 你可以用命令来validation

 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 

顺便说一句,我刚刚遵循本教程(同时使用脚本中的所有默认值),这在刚刚创build的Lucid虚拟机上工作得很好。


编辑

好的,在你的另一篇文章中你谈到了10.04。 事实上,11.04的slapd自动configuration比10.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 )的后端configuration只不过是与LDAP结构等效的文件系统结构中的LDIF文件的集合。 你可以在/etc/ldap/slapd.d自己浏览它。 10.04在那里最低限度让slapd工作,而11.04准备好了一切,以便你可以马上开始。

将.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