好的,所以我第一次学习和配置openLDAP,部分基于本教程:
http://www.rjsystems.nl/en/2100-d6-openldap-provider.php
我想添加一个示例用户,但我想我在教程中注意到了一个类型.在示例中,作者使用了cn:Christopher.我认为cn应该是一个较短的名称,类似于uid,如果不完全相同的话.所以在我的ldif中我设置了cn和gn(givenName),但是我收到了关于givenName的错误:
- ldap_add: Object class violation (65)
- additional info: attribute 'givenName' not allowed
这是我的ldif:
- dn: cn=tarcuri,ou=groups,dc=example,dc=com
- cn: jsmith
- gidNumber: 20000
- objectClass: top
- objectClass: posixGroup
- dn: uid=tarcuri,ou=people,dc=com
- uid: jsmith
- uidNumber: 20000
- gidNumber: 20000
- objectClass: top
- objectClass: person
- objectClass: posixAccount
- objectClass: shadowAccount
- cn: jsmith
- gn: John
- sn: Smith
- loginShell: /bin/bash
- homeDirectory: /home/jsmith
- userPassword: john
我如何修改我的ldif文件以正确设置’givenName’,因为看起来一个人应该能够拥有一个名字.毕竟它需要sn.
谢谢!!
更新所以我尝试使用包含给定名称的inetOrgPerson,但在使用ldapsearch检查结果后,我看到以下内容:
- givenName:: VGhvbWFzIA==
当它应该具有我在ldif中使用的给定名称.显然正在发生一些事情,任何人都有一些洞察力?请注意givenName之后的两个冒号.
我担心
RFC 2256及其后代应该归咎于此:根据RFC,一个人没有givenName,并且您的LDAP服务器(正确地)拒绝让您分配该属性.
您有几个选项:您可以使用cn(通用名称)作为名字,添加支持givenName的其他ObjectClass(如inetOrgPerson),或者选择不同的结构ObjectClass(再次,如inetOrgPerson)来基于您的对象.
您有几个选项:您可以使用cn(通用名称)作为名字,添加支持givenName的其他ObjectClass(如inetOrgPerson),或者选择不同的结构ObjectClass(再次,如inetOrgPerson)来基于您的对象.
一般来说,inetOrgPerson是你想要使用的类似“人”的对象类:它比vanilla LDAP人更有用.
更新Re:您的更新.作为givenName的结果,您获得的时髦字符串实际上是base-64编码的字符串(VGhvbWFzIA == => Thomas).大多数客户端将能够自动解码,我不知道为什么你的没有(可能是某处的配置故障).