我在嘗試與 Chef 設定 openldap 伺服器時遇到了一個問題。
配置:
- 烏班圖15.04
- OpenLDAP 2.4.31
- 廚師/OpenLdap 2.7.1
有關信息,當我運行 dkpg-reconfigure slapd (這不是嘗試自動化該過程時的選項)時,問題的第 1 部分已解決(無需更改任何 phpldapadmin 配置文件),但第 2 部分仍然存在。
第1部分:當存取phpldapadmin的admin帳號時,無法存取admin使用者(訊息:無法使用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
資料庫檔案
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
感謝您的協助。 L。
答案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
.