特定のグループ(EX:cn=Admins,dc=mydomain,dc=com
)に属するopenLDAPユーザーを別のorganizationalUnit
(EX:create, modify, update, and delete
)に属するou=Users,dc=mydomain,dc=com
ユーザーに許可しようとして立ち往生しています。 )今から約2週間。私はこれを理解しようと全力を尽くしました。 Googleでの検索、 serverfault での検索、最後に stackoverflow での検索などですが、役に立ちません。私はopenLDAPにかなり慣れていないので、おそらくエラーであるか、dn: olcDatabase={1}hdb,cn=config
のolcAccess
属性で見落としているものです。
Admin Group.ldif
dn: cn=Admins,dc=ldapserver,dc=com
changetype: add
objectClass: groupOfNames
objectClass: top
member: cn=admin,ou=Users,dc=ldapserver,dc=com
cn: Admins
Users.ldif
dn: ou=Users,dc=ldapserver,dc=com
changetype: add
objectClass: organizationalUnit
objectClass: top
ou: Users
デフォルトのolcAccess
注:これは、openLDAPサーバーの新規インストールに付属するデフォルトのACLです。
dn: olcDatabase={1}hdb,cn=config
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
注意1:私はopenLDAPにかなり慣れていないので、デフォルトで表示されるもの以外のACLs
を設定していません。最初にopenLDAPサーバーをインストールします。
注意2:質問をする前に、この質問を試しました ここ これは明らかにうまくいきませんでした。
ありがとう、アレックス
OpenldapのACLは、常に{0}、{1}、..の番号が付けられた行のリストの上から下に評価されます。条件が満たされるとすぐに、評価はimmediately停止しました(ブレークが使用されていないと仮定)。
Ubuntuによって設定され、準拠しているデフォルトのACLには、次の行があります。
olcAccess:{2}to *by * read
to * by *:すべてを満たし、後に行を追加してもまったく効果がありません。
このリンク 以上で説明されている解決策で問題が解決するはずです。次のACLリストを試してみることをお勧めします。
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to dn.subtree="ou=Users,dc=ldapserver,dc=com"
by group/groupOfUniqueNames/uniqueMember="cn=Admins,dc=ldapserver,dc=com" write
adminsグループのobjectClassをgroupOfUniqueNamesに変更します。