次の構造で LDAP サーバーを実行しています。
dc=example,dc=ldap
dc=organisations
o=orga1 (objectClasses top/organisation/dcObject)
cn=ADMINS (objectClasses top/groupOfNames)
cn=USER
o=orga2
cn=ADMIN
cn=USER
cn=users (objectClasses top/organisation/dcObject)
cn=user1 (objectClasses top/person)
cn=user2
ここで、組織グループのユーザーのみが組織を表示できるというルールをいくつか追加したいと思います。
ハードコードされたアプローチは、実装が非常に簡単でした。
olcAccess: {1}to dn.subtree="o=orga1,dc=organizations,dc=example,dc=ldap"
by group.exact="cn=ADMINS,o=orga1,dc=organizations,dc=example,dc=ldap" write
by group.exact="cn=USER,o=orga1,dc=organizations,dc=example,dc=ldap" read
by * none
('by' の前に 2 つのスペースを書くことが重要です [それは私にとって長い間問題でした])
しかし、私はすべての新しい組織にこれらのルールを実装したくないので、いくつかの正規表現 magig を使用してルールを実装しようとしました。しかし、私は惨めに失敗しました:
olcAccess: {1}to dn.regex="^o(.+),dc=organizations,dc=example,dc=ldap$"
attrs=children
by group.exact="cn=ADMINS,o=[$1],dc=organizations,dc=example,dc=ldap$" write
by group.exact="cn=USER,o=[$1],dc=organizations,dc=example,dc=ldap$" read
by * none
このルールは何も影響しません。それで、誰かが私の問題を解決するためのアイデアを持っていますか?
または、私のようにメンバーをグループ化することはできませんか?
再度、感謝します