如何正确添加ACI到OpenLDAP

所以我试图把一些ACI添加到我的OpenLDAP系统(托pipe在CentOS 6上)。 我读过别人怎么把他们的ACI放在bdb里

  olcAccess:attrs = userPassword,shadowLastChange by dn =“cn = manager,dc = bromosapien,dc = net”由匿名authentication
 olcAccess:通过*读取到dn.base =“”
 olcAccess:to * by dn =“cn = manager,dc = bromosapien,dc = net”write by * read

但是,我想避免这种情况,只是允许从容器中发生密码更改(至less避免使用目录pipe理器)。 我从他们的angular度读到这样做的人:

  dn:ou =人,dc = bromosapien,dc = net
 changetype:修改
加:aci
 aci:(targetattr =“userpassword || telephonenumber”)(version 3.0; acl“Allow self entry modification”; allow(write)(userdn =“ldap:/// self”);)

问题是,试图添加它,我得到了这个。

  #ldapadd -xWD“cn = manager,dc = bromosapien,dc = net”-f aci-password.ldif 
inputLDAP密码: 
修改条目“ou = People,dc = bromosapien,dc = net”
 ldap_modify:未定义的属性types(17)
        附加信息:aci:属性types未定义

我一定是做错了什么或提到一个错误的对象类等。问题是,如果我真的在做任何事情在bdb.ldif或是否有可能添加ACIs这种方式和任何方法是“推荐”在这种情况下,什么是更好的方法来提供我需要允许用户更改自己的密码(不需要目录pipe理器)的ACI?

编辑:我也注意到与olcAccess行,ldapsearch不显示从匿名searchuserPassword行。

找出它可能是更好的只是做bdb.ldif的方式。 我所做的就像上面那样,但是我做了一些改变。

olcAccess: {0}to attrs=userPassword,shadowLastChange,loginShell by dn="cn=manager,dc=bromosapien,dc=net" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=manager,dc=bromosapien,dc=net" write by group.exact="cn=LDAPADMIN,ou=Group,dc=bromosapien,dc=net" write by * read 

我所做的是,我用大括号和数字标记每行。 我还添加了用户更改loginshell的能力(因为我允许Bash,ksh和zsh,我们默认为bash)。 然后,我在Group OU中创build了一个groupOfNames容器。 喜欢这个。

 dn: cn=LDAPADMIN,ou=Group,dc=bromosapien,dc=net objectClass: groupOfNames objectClass: top cn: LDAPADMIN member: uid=zera,ou=People,dc=angelsofclockwork,dc=net member: uid=sithlord,ou=People,dc=angelsofclockwork,dc=net 

当然这需要memberOf覆盖。

我使用的memberOf覆盖如下:

 % vi modules.ldif dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/lib64/openldap olcModuleLoad: memberof % vi memberof.ldif dn: olcOverlay=memberof,olcDatabase={2}bdb,cn=config objectClass: olcMemberOf objectClass: olcOverlayConfig objectClass: olcConfig objectClass: top olcOverlay: memberof olcMemberOfDangling: ignore olcMemberOfRefInt: TRUE olcMemberOfGroupOC: groupOfNames olcMemberOfMemberAD: member olcMemberOfMemberOfAD: memberOf