我有关于OpenLdap和导入ldiff的查询。我在Windows上运行Openldap。
我的slapd.conf:
database mdb
suffix "dc=aaa,dc=com"
rootdn "cn=Manager,dc=aaa,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw secret
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory ./data
searchstack 20
# Indices to maintain
index mail pres,eq
index objectclass pres
index default eq,sub
index sn eq,sub,subinitial
index telephonenumber
index cn
我可以使用apache活动目录查看我的连接。
我可以看到dc = aaa,dc = com。
我正在尝试导入ldif文件。
在顶部,它包含:
dn: cn=ab3java,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: ab3java
当我跑步时
ldapmodify -a -x -D "cn=Manager,dc=aaa,dc=com" -w secret -H ldap:// -f ab3java.ldif
我收到以下错误:
adding new entry "cn=ab3java,cn=schema,cn=config"
ldap_add: Insufficient access (50)
我在ldap浏览器中看不到cn = config。
请指教。我怎样才能获得正确的访问权限?
此致 乙
答案 0 :(得分:0)
如果不将服务器迁移到在线配置数据库,则无法执行此操作。您的服务器可能未配置为使用在线配置数据库,了解如何使用slapd.conf进行配置,而不是使用/etc/openldap/slapd.d下的文件。可以同时使用slapd.d和slapd.conf,因此需要检查。如果openldap未配置为使用联机配置,则在服务器运行时无法更改其配置。您需要编辑/etc/openldap/slapd.conf
并重新启动服务器。
openldap中可以有多个后端数据库,每个后端数据库都有自己的后缀和访问控制。您在上面的示例中为其定义了访问控制的数据库是下面可以访问的数据库dc=aaa,dc=com
。您尝试更新的数据库的后缀为cn=config
。它是openldap存储自己配置的数据库(如果配置了在线配置选项)。因此提供的凭据将不匹配。
通常,建议使用在线配置数据库,因为它是运行openldap的一种更好的方法。有关cn=config
数据库的详细信息,请参阅此链接:http://www.zytrax.com/books/ldap/ch6/slapd-config.html。本书还包含有关如何从静态配置迁移到在线配置的信息。
通常,openldap配置数据库将受到保护,因此只能由运行ldap服务器的计算机上的root用户访问。
您可以通过查看openldap /etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif
的配置文件来检查这一点。应该有类似这样的一行:
olcAccess: {0}
to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
manage
by * none
这意味着唯一可以访问配置数据库的人将是本地系统上的root用户。您可以添加root用户标识和密码,但这只会打开您的ldap服务器进行远程攻击。