我正在设置一个登录节点并使用来自 Ubuntu 14.04 上的存储库的 openLDAP,但遇到了重复 attributeTypes 的问题。
问题似乎出在“gecos”字段属性上。当我尝试运行 slapcat 或 slapadd 或 slapindex 时,我得到以下输出:
$ slapcat
53ecd288 olcAttributeTypes: value #0 olcAttributeTypes: Duplicate attributeType: "1.3.6.1.1.1.1.2"
53ecd288 config error processing cn={3}nis,cn=schema,cn=config: olcAttributeTypes: Duplicate attributeType: "1.3.6.1.1.1.1.2"
slapcat: bad configuration file!
当我 grep 1.3.6.1.1.1.1.2 时,我得到了
$ cd /etc/ldap/ && grep -r '1.3.6.1.1.1.1.2' *
schema/nis.schema:attributetype ( 1.3.6.1.1.1.1.2 NAME 'gecos'
schema/nis.ldif:olcAttributeTypes: ( 1.3.6.1.1.1.1.2 NAME 'gecos' DESC 'The GECOS field; th
slapd.d/cn=config/cn=schema/cn={3}nis.ldif:olcAttributeTypes: {0}( 1.3.6.1.1.1.1.2 NAME 'gecos' DESC 'The GECOS field; th
slapd.d/cn=config/cn=schema/cn={2}nis.ldif:olcAttributeTypes: {0}( 1.3.6.1.1.1.1.2 NAME 'gecos' DESC 'The GECOS field; th
不用说,slapd 启动失败。
我不知道该如何解决这个问题。在搜索这个问题时,我发现人们在尝试使用来自其他较旧服务器的 core.schema 文件时遇到了类似的问题。我没有使用来自其他服务器的任何文件,也没有编辑 core.schema 或任何其他核心文件,ldap.conf 和 slapd.conf 除外。
有人了解这个问题吗?我该怎么做才能解决这个问题?
答案1
问题似乎是您使用了 OID 1.3.6.1.1.1.1.2 来定义两个“不同”的属性(实际上是两次相同的属性),一次在 中cn=config,cn=schema,cn={3}nis
,一次在 中cn=config,cn=schema,cn={2}nis
。引用属性的 OID 必须是唯一的。
我不知道您处于迁移过程的哪个阶段,但看起来您可能以某种方式两次导入了相同的架构。如果您刚刚进行了某种迁移,您可能需要再次尝试,注意只迁移架构一次。
如果您刚刚将一堆架构文件转换为 LDIF 以导入cn=config,cn=schema
,请检查cn=config/cn=schema
文件夹中是否存在 NIS(或任何其他架构组件)的多个条目。我认为您有文件cn={2}nis.ldif
和cn={3}nis.ldif
;使用 diff 查看它们是否相同(或它们有何不同),必要时合并它们,然后尝试(重新)导入其中只有一个。