상위 항목에 대한 쓰기 액세스 권한이 없습니다.

상위 항목에 대한 쓰기 액세스 권한이 없습니다.

chen이 Chef와 함께 openldap 서버를 설정하려고 할 때 문제가 발생했습니다.

구성:

  • 우분투 15.04
  • 오픈LDAP 2.4.31
  • 셰프/OpenLdap 2.7.1

참고로 dkpg-reconfigure slapd(프로세스를 자동화하려고 할 때 옵션이 아님)를 실행하면 문제의 1부는 해결되지만(phpldapadmin 구성 파일을 변경하지 않고) 2부는 남아 있습니다.

파트 1: phpldapadmin에 대한 관리자 계정에 액세스할 때 관리자 사용자에 액세스할 수 없습니다. (메시지: 이 베이스는 PLA로 생성할 수 없습니다.)

2부: 실행하려고 할 때 sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/db.ldif오류 메시지는 다음과 같습니다.

STDERR: SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
ldap_add: Insufficient access (50)
    additional info: no write access to parent

slapd.conf

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/nis.schema

pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd/slapd.args

loglevel        0

modulepath      /usr/lib/ldap
moduleload  back_hdb

sizelimit 500
tool-threads 1

database        hdb
suffix          "dc=a6,dc=com"
rootdn          "cn=admin,dc=a6,dc=com"
rootpw          {SSHA}a6a6aa66a6a6a6a6a6a6a6
directory       "/var/lib/ldap"
lastmod         on

dbconfig set_cachesize 0 31457280 0

dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500

index default pres,eq,approx,sub
index objectClass eq
index cn,ou,sn,uid,l,mail,gecos,memberUid,description
index loginShell,homeDirectory pres,eq,approx
index uidNumber,gidNumber pres,eq

db.ldif

dn: dc=a6,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: a6
o: a6
description: A6

dn: cn=admin,dc=a6,dc=com
cn: admin
description: LDAP administrator
objectclass: simpleSecurityObject
objectclass: organizationalRole
userpassword: {SSHA}Aa6a6aa66a6a6a6a6a6a6a6

dn: ou=users,dc=a6,dc=com
objectClass: top
objectClass: organizationalUnit
ou: users

dn: ou=groups,dc=a6,dc=com
objectClass: top
objectClass: organizationalUnit
ou: groups

dn: cn=administrators,ou=groups,dc=a6,dc=com
objectClass: posixGroup
cn: administrators
gidNumber: 500

dn: uid=co,ou=administrators,dc=a6,dc=com
objectclass: inetOrgPerson
objectclass: posixAccount
cn: co
gidnumber: 500
givenname: Jack
homedirectory: /home/co
loginshell: /bin/bash
uid: co
uidnumber: 1000
userpassword:  {SSHA}a6a6aa66a6a6a6a6a6a6a6

당신의 도움을 주셔서 감사합니다. 엘.

답변1

같은 오류가 발생했습니다.

명령:ldapadd -Y EXTERNAL -H ldapi:/// -f base.ldif

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "dc=example,dc=com"
ldap_add: Insufficient access (50)
        additional info: no write access to parent

내 base.ldif 콘텐츠는 다음과 같습니다.

CMD: cat base.ldif

dn: dc=example,dc=com
objectClass: dcObject
objectclass: organization
o: example.com
dc: example
description: My LDAP Root

dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword: secret
description: LDAP administrator

관리자로 바인딩하여 오류를 수정했습니다.

 ldapadd -x -D 'cn=admin,dc=example,dc=com' -w secret -H ldapi:/// -f base.ldif

성공적인:

adding new entry "dc=example,dc=com"

adding new entry "cn=admin,dc=example,dc=com"

답변2

기본 ACL은 이를 허용하지 않습니다. 외부 인증에는 트리에 대한 쓰기 액세스 권한이 없습니다. LDAP 관리자/수퍼유저(rootdn)만이 이를 가지고 있습니다. (실제로는 모든 ACL을 우회합니다.)

따라서 다른 답변에서 제안한 것처럼 LDAP 관리자로 바인딩하거나 자체 ACL 규칙을 추가하십시오.

나는 이것을 첫 번째 acl 규칙으로 사용합니다.

to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth write by * break

manage대신에 사용할 수도 있습니다 write.

관련 정보