问:向 openLDAP 添加 olcAccess 规则的正确方法是什么?

问:向 openLDAP 添加 olcAccess 规则的正确方法是什么?

我有一个新的 OpenLDAP 服务器,正在设置一个新环境。我的布局大致如下:

dc=example,dc=com
    ou=groups
    ou=accounts
        uid=surfrock66
        uid=ldapbinduser
        uid=surfrock67

我有一个用于修改 olcAccess 的 ldif 文件,并且语法检查并安装正确,但我无法再对任何用户进行身份验证。

以下是我希望实现的目标:

  1. 我的用户现在就像一个域管理员,可以管理一切
  2. ldapbinduser 帐户将用于绑定,这意味着它需要验证并读取用户和组(基本上是整个目录)
  3. 任何用户都应该能够读取自己的属性、进行身份验证并更改自己的密码
  4. 其余一切都被否定。

我确信我的权限顺序不正确,但我无法理解它:

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to dn.subtree="dc=example,dc=com"
  by dn.one="uid=surfrock66,ou=accounts,dc=example,dc=com" manage
  by dn.one="uid=ldapbinduser,ou=accounts,dc=example,dc=com" read
-
add: olcAccess
olcAccess: {1}to dn.children="ou=accounts,dc=example,dc=com" attrs=userPassword
  by self =xw
  by anonymous auth
  by * none
-
add: olcAccess
olcAccess: {2}to dn.children="ou=accounts,dc=example,dc=com"
  by self read
  by * none

我已经读过几次了,但还是有点难以理解:https://www.openldap.org/doc/admin24/access-control.html 我也查阅了很多例子。我唯一的其他想法(我将尝试)是先放规则“1”,然后是规则 0,然后是规则 2?不过,在我开始配置之前,如果有人能更了解这一点,我会很高兴能解释一下我错在哪里。

答案1

这篇文章对我帮助很大:

https://medium.com/@moep/keeping-your-sanity-while-designing-openldap-acls-9132068ed55c

解决方案是这样的:

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
  by dn="cn=admin,dc=example,dc=com" manage
  by dn="cn=surfrock66,ou=accounts,dc=example,dc=com" manage
  by dn="cn=ldapbinduser,ou=accounts,dc=example,dc=com" read
  by * break
-
add: olcAccess
olcAccess: {1}to dn.children="ou=accounts,dc=example,dc=com" attrs=userPassword,shadowExpire,shadowInactive,shadowLastChange,shadowMax,shadowMin,shadowWarning
  by self write
  by anonymous auth
-
add: olcAccess
olcAccess: {2}to dn.subtree="dc=example,dc=com"
  by self read

相关内容