Bitnami OpenLDAP Docker容器ACL读写权限配置及导入问题求助
解决Bitnami OpenLDAP Docker容器的ACL导入问题
核心问题分析
- 出现
找不到cn=config或未认证错误,是因为操作配置库(cn=config)必须使用LDAP配置管理员账号,而非普通域管理员(admin@dc=example,dc=com)。 - 你的LDIF片段存在格式错误,且目标DN与需求不符(你要配置
ou=groups但写的是ou=User)。
步骤1:使用配置管理员认证访问cn=config
Bitnami OpenLDAP开启LDAP_CONFIG_ADMIN_ENABLED=yes后,默认配置管理员账号为:
cn=admin,cn=config
密码与你设置的LDAP_ADMIN_PASSWORD一致(即admin)。
步骤2:编写正确的ACL LDIF文件
假设你要给cn=x,ou=groups,dc=example,dc=com组,授予对ou=groups,dc=example,dc=com子树的读写权限,正确的LDIF示例如下:
dn: olcDatabase={1}mdb,cn=config changetype: modify # 注意:不要直接删除所有olcAccess,避免丢失默认ACL,建议新增规则 add: olcAccess olcAccess: {1}to dn.subtree="ou=groups,dc=example,dc=com" by group.exact="cn=x,ou=groups,dc=example,dc=com" write by * read # 保留其他用户的只读权限,可根据需求调整
关键修正说明:
- 拆分
add: olcAccess和olcAccess: ...为单独行,LDIF语法要求每个属性行独立。 - 目标DN改为你实际需要的
ou=groups,dc=example,dc=com。 group.exact需要指定组的完整条目DN,而非OU路径。- 保留默认权限规则(如
by * read),避免破坏原有LDAP功能。
步骤3:导入LDIF到容器
方式1:使用容器内的ldapmodify命令
在宿主机执行以下命令,进入容器并导入LDIF:
# 进入OpenLDAP容器 docker exec -it openldap bash # 执行导入命令,使用配置管理员认证 ldapmodify -x -D cn=admin,cn=config -w admin -f /ldifs/your-acl-file.ldif
方式2:通过phpLDAPadmin操作
- 登录phpLDAPadmin时,选择
Server -> cn=config作为连接目标。 - 绑定DN填写
cn=admin,cn=config,密码填admin。 - 找到
olcDatabase={1}mdb,cn=config条目,编辑其olcAccess属性,添加你需要的规则。
验证ACL是否生效
可以用目标组内的用户绑定LDAP,尝试读写ou=groups下的条目,或者用ldapsearch测试:
# 用组内用户绑定(假设用户是cn=testuser,ou=users,dc=example,dc=com) ldapsearch -x -D cn=testuser,ou=users,dc=example,dc=com -w testpass -b ou=groups,dc=example,dc=com # 尝试修改条目(比如添加描述) ldapmodify -x -D cn=testuser,ou=users,dc=example,dc=com -w testpass <<EOF dn: cn=x,ou=groups,dc=example,dc=com changetype: modify add: description description: Test ACL access EOF
内容的提问来源于stack exchange,提问作者Indi GP
相关产品推荐
相关产品推荐

