在 LDAP 伺服器上創建 OpenLdap 管理員組
我正在嘗試在執行 slapd 的 OpenLdap 伺服器上創建一個簡單的管理員組。目前沒有 slapd 文件,我一直在使用 cn=config 格式。
- 作業系統:CentOS Linux 版本 7.6.1810(核心)
- OpenLDAP:$OpenLDAP:slapd 2.4.44
我的目標是能夠將使用者放入此管理組“cn=admins-group,ou=groups,dc=example,dc=com”,以便他們可以登錄 Phpldapadmin Web 界面並能夠在“ ou=人,dc=example,dc=com”。
這是管理員組的 ldif:(admin-group.ldif)
dn: cn=admin-group,ou=groups,dc=example,dc=com objectClass: posixGroup cn: admin-group gidNumber: 12345 memberUid: admin1
我意識到實現我的目標需要採取的步驟之一是創建一個 ACL 規則,允許管理員組中的使用者訪問他們需要的資源。
這是我為修改 olcDatabase={1}monitor: (accesschange.ldif) 中已有規則而編寫的 ldif
dn: olcDatabase={1}monitor,cn=config changetype: modify add: olcAccess olcAccess: to * by self write by group/posixGroup/uniqueMember=cn=admins- group,ou=groups,dc=example,dc=com write
我使用以下命令執行此文件:
ldapmodify -x -W -D "cn=ldapadm,dc=example,dc=com" -f monitor.ldif
這執行沒有問題。但是,嘗試在 People OU 下添加使用者時,我仍然在 phpldapadmin 上收到以下錯誤
Could not add the object to the LDAP server. LDAP said: Insufficient access Error number: 0x32 (LDAP_INSUFFICIENT_ACCESS) Description: You do not have sufficient permissions to perform that operation.
我一直在研究這個問題 2 週沒有成功。有人可以幫忙嗎?
編輯:我正在查看 /etc/openldap/slapd.d/cn=config/ 下的 olcDatabase:{1}monitor 文件,但沒有看到我添加的新規則。也許這是我如何使用 ldapmodify 的問題?
編輯#2:通過將ldapmodify與EXTERNAL一起使用來修復寫入問題,如下所示:
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif
我將新的 ACL 規則放在 monitor.ldif 中並以這種方式執行。Monitor.ldif 如下所示。
dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=ldapadm,dc=fsr,dc=local" read by * none olcAccess: to * by self write by group/groupOfNames/member.exact="cn=admins,ou=groups,dc=fsr,dc=local" write
但是,我仍然無法使用一個 admin1 創建使用者。我不確定我錯過了什麼。我可以看到我在 olcDatabase:{1}monitor 文件中創建的規則,但我仍然無法創建使用者。
who 子句中使用的組模式是錯誤的。您必須使用具有完整 DN 的組模式作為成員屬性。
memberUid
不管用。更好的使用:
by group/groupNames/member="cn=admins-group,ou=groups,dc=example,dc=com" write
組條目應如下所示:
dn: cn=admins-group,ou=groups,dc=example,dc=com objectClass: groupOfNames cn: admins-group member: uid=foo1,ou=users,dc=example,dc=com