我有以下结构:
dc=th,dc=company,dc=com
|
|->dmc
|
|->dmc_customer_company
我创建了一个组来管理write
访问dmc_customer_company
。
分组,按级别划分:
app_all
app_dmc
app_dmc_company1
我的脚本(格式化以帮助理解)
dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
by self write
by anonymous auth
by dn="cn=admin,dc=th,dc=company,dc=com" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by self write
by dn="cn=admin,dc=th,dc=company,dc=com" write by * read
olcAccess: {3}to dn.subtree="dc=th,dc=company,dc=com"
by self write
by group.exact="cn=app_all,ou=Groups,dc=th,dc=company,dc=com" manage
by * break
olcAccess: {4}to dn.subtree="o=dmc,dc=th,dc=company,dc=com"
by self write
by group.exact="cn=app_dmc,ou=Groups,dc=th,dc=company,dc=com" manage
by * break
olcAccess: {5}to dn.subtree="o=dmc_company1,o=dmc,dc=th,dc=company,dc=com"
by self write
by group.exact="cn=app_dmc_company1,ou=Groups,dc=th,dc=company,dc=com" manage
by * break
我有用户:
cn=company1_admin,ou=application,dc=th,dc=company,dc=com
和:
dn: cn=app_dmc_company1,ou=Groups,dc=th,dc=company,dc=com
objectClass: groupOfNames
objectClass: top
cn: app_dmc_company1
member: cn=company1_admin,ou=application,dc=th,dc=company,dc=com
member: ou=Groups,dc=th,dc=company,dc=com
我申请:ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f <file>
我使用以下命令检查配置:ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config"
它们在配置内部
我错在哪里了?因为当:
- 我用
company1_admin
- 编写或创建其他用户
- 里面
o=dmc_company1,o=dmc,dc=th,dc=company,dc=com
我收到Ldap code: 50 LDAP_INSUFFICIENT_ACCESS
我在 Ubuntu 14.04 中使用没有 slapd.conf 的 OpenLDAP。OpenLDAP 版本是 2.4.1
谢谢
答案1
我会检查对“儿童”伪条目的访问权限
根据openldap-2.4手册,acl部分:
要添加或删除条目,主体必须具有对该条目的条目属性的写访问权限,并且必须具有对该条目的父级的子级属性的写访问权限
因此,作为起点:
olcAccess: {5}to dn.subtree="o=dmc_company1,o=dmc,dc=th,dc=company,dc=com"
by self write
by group.exact="cn=app_dmc_company1,ou=Groups,dc=th,dc=company,dc=com" write
by * break
olcAccess: {6}to dn.children="o=dmc_company1,o=dmc,dc=th,dc=company,dc=com"
by group.exact="cn=app_dmc_company1,ou=Groups,dc=th,dc=company,dc=com" write
by * break