我试图设置我的第一个LDAP服务器,将用于存储用户帐户(如邮件,混帐服务器等一些东西)。 我设法安装服务器,但当我想创build我的第一个对象时,我卡住了。
我想要设置的服务器是ashley-vps.mildred.fr(现在,这是一个testing服务器)。 它的dn是dc=ashley-vps, dc=mildred, dc=fr 。 我做的第一件事是导入cosine (是一个math函数?)和nis模式。 然后,我修改了我的configuration的oldSuffix和oldRootDN ,如下所示:
dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=ashley-vps, dc=mildred, dc=fr - replace: olcRootDN olcRootDN: cn=Manager, dc=ashley-vps, dc=mildred, dc=fr
我在“没有全球优势知识”的时候使用了答案, 同时把一个国家作为模板。
我不认为我需要设置任何特殊访问,因为我使用-Y EXTERNAL -H ldapi:/// ,当我查看我的访问设置时,我似乎有必要的权限:
# {0}config, config dn: olcDatabase={0}config,cn=config olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external ,cn=auth" manage by * none # {1}monitor, config dn: olcDatabase={1}monitor,cn=config olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external ,cn=auth" read by dn.base="cn=Manager,dc=my-domain,dc=com" read by * none
现在,我想创build我的第一个对象。 让我们从dn: dc=ashley-vps, dc=mildred, dc=fr开始dn: dc=ashley-vps, dc=mildred, dc=fr :
dn: dc=ashley-vps, dc=mildred, dc=fr changetype: add objectclass: top objectclass: organizationalUnit objectclass: dcObject ou: ashley-vps.mildred.fr
我被拒绝了:
ldap_add: Insufficient access (50) additional info: no write access to parent
我想这是因为这超出了LDAP服务器pipe理的层次结构的顶部,还是它? 如果我尝试直接创build一个人:
dn: cn=Toto, dc=ashley-vps, dc=mildred, dc=fr changetype: add objectclass: person cn: Toto sn: Surname
我也被拒绝了:
ldap_add: No such object (32)
这次我想这是因为最上面的对象丢失了。
那么,如何创build顶级对象? 为什么我甚至需要创build一个顶级对象? 这似乎是一个不必要的限制。 同样,在创buildposixAccount ,似乎我们也需要创build一个用户和组organizationalUnit (如本文所述 )。 我可以没有?
该解决scheme似乎将olcAccess属性添加到dn: olcDatabase={2}hdb,cn=config 。 我以为我不需要它,但是我确实需要它。 这使得修改数据库成为可能。
所以我将下面的代码添加到dn: olcDatabase={2}hdb,cn=config :
- replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write by * none
它现在可以工作(至less,我可以创builddc=ashley-vps,dc=mildred,dc=fr )
注意:不要忘记把两个空间用于连续行,否则你会得到以下错误: ldap_modify:其他(例如,特定于实现)错误(80),<olcAccess>处理程序退出1
编辑:参见slapd.access(5)手册页并授予manage权限(最高权限)
我意识到这是晚了,但我会张贴这个以备将来参考。 第一个错误我不会解决,因为我认为你根本没有添加一个必需的模式。 但对于错误ldap_add: Insufficient access (50) additional info: no write access to parent对ldap_add: Insufficient access (50) additional info: no write access to parent以下命令用于修改/添加模式:
ldapadd -Q -Y EXTERNAL -H ldapi:/// -w <password> -f </path/to/file>
要将条目添加到您的LDAP,请使用以下代码:
ldapadd -x -D 'cn=Manager,dc=domain,dc=local' -w <password> -H ldapi:/// -f </path/to/file>