Hi Ondřej,
Hi Dieter,

Thanks for your replies! The basic links I've had already found and read 
through carefully and didn't find a correct solution for my problem =(

The olcAccess statements out of the trials were all placed in front of the 
asterisk * one. So the order should not be the problem =(

Within the little bash script, the LDIF-parts from the different trials are 
always replacing this block:
>>> ########
>>> ## LDIF blocks from below
>>> ########


With slapacl I don’t really get a clue – I’ll attach one result below, that I 
would interpret like that my l.dap user is not allowed to change the 
description of entity e1 … but if I use JXplorer to connect to the directory as 
l.dap, I can – even submit. Is it wrong how I’m using slapacl? Or isn’t it 
reliable since I’m using RegEx?

Thank you for your help!
Cheers,
Martin


> $ slapacl -v -U "uid=l.dap,ou=people,dc=example,dc=com" -b 
> "o=e1,ou=entities,dc=example,dc=com" -d acl "description/write"
> 
> 5d5db13a => access_allowed: search access to "cn=config" "objectClass" 
> requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to "cn=module{0},cn=config" 
> "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to "cn=schema,cn=config" 
> "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to "cn={0}core,cn=schema,cn=config" 
> "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to 
> "cn={1}cosine,cn=schema,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to "cn={2}nis,cn=schema,cn=config" 
> "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to 
> "cn={3}inetorgperson,cn=schema,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to 
> "cn={4}ppolicy,cn=schema,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to "cn={5}dhcp,cn=schema,cn=config" 
> "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to 
> "cn={6}dnszone,cn=schema,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to "cn={7}mail,cn=schema,cn=config" 
> "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to "cn={8}mmc,cn=schema,cn=config" 
> "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to 
> "cn={9}openssh-lpk,cn=schema,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to 
> "cn={10}quota,cn=schema,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to 
> "cn={11}radius,cn=schema,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to 
> "cn={12}samba,cn=schema,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to 
> "cn={13}zarafa,cn=schema,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to "olcBackend={0}mdb,cn=config" 
> "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to 
> "olcDatabase={-1}frontend,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> Backend ACL: access to *
>       by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" 
> manage
>       by * +0 break
> 
> Backend ACL: access to dn.base=""
>       by * read
> 
> Backend ACL: access to dn.base="cn=subschema"
>       by * read
> 
> 5d5db13a => access_allowed: search access to 
> "olcDatabase={0}config,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> Backend ACL: access to *
>       by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" 
> manage
>       by * +0 break
> 
> 5d5db13a /etc/ldap/slapd.d: line 1: warning: cannot assess the validity of 
> the ACL scope within backend naming context
> 5d5db13a => access_allowed: search access to "olcDatabase={1}mdb,cn=config" 
> "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> Backend ACL: access to attrs=userPassword,shadowLastChange
>       by self =wx
>       by dn.base="cn=admin,dc=example,dc=com" =wx
>       by set.exact="[cn=ldapadmins,ou=groups,dc=example,dc=com]/member* & 
> user" =wx
>       by anonymous auth
>       by * none
> 
> 5d5db13a /etc/ldap/slapd.d: line 1: warning: cannot assess the validity of 
> the ACL scope within backend naming context
> Backend ACL: access to *
>       by self write
>       by dn.base="cn=admin,dc=example,dc=com" write
>       by set.exact="[cn=ldapadmins,ou=groups,dc=example,dc=com]/member* & 
> user" write
>       by users read
>       by * none
> 
> 5d5db13a /etc/ldap/slapd.d: line 1: warning: cannot assess the validity of 
> the ACL scope within backend naming context
> Backend ACL: access to dn.regex="([^,]+,)?o=([^,]+),ou=lve,dc=example,dc=com"
>       by self write
>       by dn.base="cn=admin,dc=example,dc=com" write
>       by set.exact="[cn=ldapadmins,ou=groups,dc=example,dc=com]/member* & 
> user" write
>       by set.expand="[cn=admin,o=,ou=lve,dc=example,dc=com]/member* & user" 
> write
>       by set.exact="this/member* & user" read
>       by * none
> 
> 5d5db13a => access_allowed: search access to 
> "olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> 5d5db13a => access_allowed: search access to 
> "olcOverlay={1}refint,olcDatabase={1}mdb,cn=config" "objectClass" requested
> 5d5db13a <= root access granted
> 5d5db13a => access_allowed: search access granted by manage(=mwrscxd)
> Backend ACL: access to *
>       by * none
> 
> 5d5db13a config_back_db_open: line 0: warning: cannot assess the validity of 
> the ACL scope within backend naming context
> authcDN: "uid=uid\3Dl.dap\2Cou\3Dpeople\2Cdc\3dexample\2Cdc\3Dcom,cn=auth"
> 5d5db13a => access_allowed: write access to 
> "o=jpbay,ou=lve,dc=example,dc=com" "description" requested
> 5d5db13a => acl_get: [2] attr description
> 5d5db13a => acl_mask: access to entry "o=jpbay,ou=lve,dc=example,dc=com", 
> attr "description" requested
> 5d5db13a => acl_mask: to all values by 
> "uid=uid\3Dl.dap\2Cou\3Dpeople\2Cdc\3dexample\2Cdc\3Dcom,cn=auth", (=0) 
> 5d5db13a <= check a_dn_pat: self
> 5d5db13a <= check a_dn_pat: cn=admin,dc=example,dc=com
> 5d5db13a <= check a_set_pat: 
> [cn=ldapadmins,ou=groups,dc=example,dc=com]/member* & user
> 5d5db13a => mdb_entry_get: found entry: 
> "cn=ldapadmins,ou=groups,dc=example,dc=com"
> 5d5db13a   ACL set[0]=cn=globaladmins,ou=groups,dc=example,dc=com
> 5d5db13a => mdb_entry_get: found entry: 
> "cn=globaladmins,ou=groups,dc=example,dc=com"
> 5d5db13a   ACL set[0]=cn=globaladmins,ou=groups,dc=example,dc=com
> 5d5db13a   ACL set[1]=cn=admin,dc=example,dc=com
> 5d5db13a   ACL set[2]=uid=l.dap,ou=people,dc=example,dc=com
> 5d5db13a => mdb_entry_get: found entry: "cn=admin,dc=example,dc=com"
> 5d5db13a <= mdb_entry_get: failed to find attribute member
> 5d5db13a => mdb_entry_get: found entry: 
> "uid=l.dap,ou=people,dc=example,dc=com"
> 5d5db13a <= mdb_entry_get: failed to find attribute member
> 5d5db13a   ACL set: empty
> 5d5db13a <= check a_dn_pat: users
> 5d5db13a <= acl_mask: [4] applying read(=rscxd) (stop)
> 5d5db13a <= acl_mask: [4] mask: read(=rscxd)
> 5d5db13a => slap_access_allowed: write access denied by read(=rscxd)
> 5d5db13a => access_allowed: no more rules
> write access to description: DENIED



On 21. Aug 2019, at 19:14, Dieter Klünter <[email protected]> wrote:

> Am Wed, 21 Aug 2019 10:50:19 +0200
> schrieb Ondřej Kuzník <[email protected] <mailto:[email protected]>>:
> 
>> On Tue, Aug 20, 2019 at 10:22:56PM +0200, Martin W. wrote:
>>> Dear OpenLDAP technical list,
>>> 
>>> I‘ve been running into a little problem with my permission
>>> structures – and was wondering if you could help me with it.
>>> 
>>> I want the members of a group to administer a tree structure, the
>>> group is member of it. I've tried some acl settings – I'll post my
>>> trials below the basic structure.
>>> 
>>> I've tried some different things ... and none Regex was successful
>>> :( Since I'll post some fragments, I put every LDIF fragment within
>>> such a bash fragment:
>>> 
>>>> olcAccess: to *
>>>>           by self write
>>>>           by dn="cn=admin,dc=example,dc=com" write
>>>>           by
>>>> set="[cn=ldapadmins,ou=groups,dc=example,dc=com]/member* & user"
>>>> write by users read by * none  
>>> 
>>> trial 1
>>> 
>>>> olcAccess: to
>>>> dn.regex="([^,]+,)?o=([^,]+),ou=entities,dc=example,dc=com" by
>>>> self write by dn="cn=admin,dc=example,dc=com" write
>>>>           by
>>>> set="[cn=ldapadmins,ou=groups,dc=example,dc=com]/member* & user"
>>>> write by
>>>> set.expand="[cn=admin,o=$2,ou=entities,dc=example,dc=com]/member*
>>>> & user" write by set="this/member* & user" read by * none  
>>> 
>>> The result is, that admin and any member of ldapadminscan edit, the
>>> members of specific entity admin subgroups cannot edit.
>>> The specific admin subgroups cannot even see the entities subtree.  
>> 
>> Hi Martin,
>> what is the order of the above two olcAccess statements? If they apply
>> in the order above, it seems the first one will always apply and
>> processing will stop there. In that case you either want to add a
>> "break" in the first one or split/move it to be checked later.
>> 
>> I assume you also know and use the slapacl tool (and loglevel acl) to
>> test with? Does it show any additional information that might be
>> helpful in diagnosing the issue?
> 
> With regard to 'set' here is some basic information.
> http://www.openldap.org/faq/data/cache/1133.html 
> <http://www.openldap.org/faq/data/cache/1133.html>
> http://www.openldap.org/faq/data/cache/1134.html 
> <http://www.openldap.org/faq/data/cache/1134.html>
> 
> -Dieter
> 
> -- 
> Dieter Klünter | Systemberatung
> http://sys4.de <http://sys4.de/>
> GPG Key ID: E9ED159B
> 53°37'09,95"N
> 10°08'02,42"E

Reply via email to