好的,所以我第一次学习和配置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).大多数客户端将能够自动解码,我不知道为什么你的没有(可能是某处的配置故障).