【问题标题】:LDAP specific ACL for each users每个用户的 LDAP 特定 ACL
【发布时间】:2018-01-29 13:44:18
【问题描述】:

我正在寻找一种方法来允许 LDAP 用户写入具有他们姓名的分支。比如我想让每个用户A,B,C允许写入一个cn=A,ou=foo,cn=B,ou=foo,cn=C,ou=foo... 有没有办法在不显式编写的情况下做到这一点。

不是这样的:

access: to subtree="cn=A,ou=foo"
  by dn.exact="uid=A,ou=people" write
access: to subtree="cn=B,ou=foo"
  by dn.exact="uid=B,ou=people" write
...

也许用正则表达式?

【问题讨论】:

    标签: linux ldap acl openldap


    【解决方案1】:

    类似的东西会起作用:

    olcAccess: to dn.regex=".+,cn=([^,]+),ou=foo$"
      by dn.exact,expand="uid=$1,ou=people" write
      by users read
      by * none
    

    每个用户都将拥有对其名称在ou=foo 中的分支的写入权限。

    【讨论】:

      【解决方案2】:

      您无需为每个用户指定此项。你只需要

      access: to * by self write
      

      【讨论】:

      • 也许我不够清楚,但我不希望用户 A 能够在我的示例中写入 cn=B,ou=foo。
      • 这正是它的作用。每个人都可以写自己的条目,在此不允许阅读任何其他条目,更不用说写了。
      • 但问题是,这不是他们的条目。我知道它适用于用户的条目。
      • 什么不是他们的条目?
      • 条目 'cn=A,ou=foo, cn=B,ou=foo, cn=C,ou=foo...' 不是用户条目。这只是目录中某处与用户名匹配的条目。
      【解决方案3】:

      我搞定了。

      目录架构:

         -dc=myorg,dc=com
            -ou=nonprod
              -ou=hostdefinitions
            -ou=people
               -cn=user1
               -cn=user2
            -ou=prod
              -ou=hostdefinitions
      

      用户:

      cn=user2
      gidNumber=235
      homeDirectory=/home/user2
      uid=user2
      uidNumber=235
      userPassword={SSHA hashed password}
      cn=user1,ou=People,dc=myorg,dc=com
      objectClass=account,extensibleObject,posixAccount,shadowAccount,top
      
      cn=user1
      gidNumber=234
      homeDirectory=/home/user1
      uid=user1
      uidNumber=234
      userPassword={SSHA hashed password}
      cn=user1,ou=People,dc=myorg,dc=com
      objectClass=account,extensibleObject,posixAccount,shadowAccount,top
      

      ACL:

      access to dn.subtree="ou=nonprod,dc=myorg,dc=com"
          by dn.exact="cn=user1,ou=People,dc=myorg,dc=com" manage
          by dn.exact="cn=user2,ou=People,dc=myorg,dc=com" none
      
       access to dn.subtree="ou=prod,dc=myorg,dc=com"
          by dn.exact="cn=user1,ou=People,dc=myorg,dc=com" none
          by dn.exact="cn=user2,ou=People,dc=myorg,dc=com" manage
      
       access to dn.base="" by * read
       access to dn.base="cn=subschema" by * read
      
       access to *
          by self write
          by anonymous auth
      

      【讨论】:

      • 这不是我想要的,您仍然需要为每个新用户添加行。但我觉得我想要的不可能……
      猜你喜欢
      • 1970-01-01
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多