There are a few ways to do this. One approach is illustrated here.
Consider the following DIT layout:
+-dc=example,dc=com
+--cn=adminstrators,dc=example,dc=com
+--cn=fred blogs,dc=example,dc=com
and the following group object (in LDIF format):
dn: cn=adminstrators,dc=example,dc=com
cn: adminstrators of this region
objectclass: groupofNames (important for the group acl feature)
member: cn=fred blogs,dc=example,dc=com
member: cn=somebody else,dc=example,dc=com
One can then grant access to the members of this this group
by adding appropriate by group clause to an access
directive in slapd.conf(5). For instance,
access to dn.children="dc=example,dc=com"
by self write
by group.exact="cn=Administrators,dc=example,dc=com" write
by * auth
Like by dn clauses, one can also use expand the group
name based upon the regular expression matching of the target,
that is, the to dn.regex). For instance,
access to dn.regex="(.+,)?ou=People,(dc=[^,]+,dc=[^,]+)$"
attrs=children,entry,uid
by group.expand="cn=Managers,$2" write
by users read
by * auth
|
The above illustration assumed that the group members are to be found
in the "member" attribute type of the "groupOfNames" object class.
If you need to use a different group object and/or a different
attribute type then use the following slapd.conf (abbreviated)
syntax:
access to <what>
by group/<objectclass>/<attributename>=<DN> <access>
For example:
access to *
by group/organizationalRole/roleOccupant="cn=Administrator,dc=example,dc=com" write
In this case, we have an ObjectClass organizationalRole which
contains the administrator DN's in the roleOccupant attribute.
For instance:
dn: cn=Adminstrator,dc=example,dc=com
cn: Adminstrator
objectclass: organizationalRole
roleOccupant: cn=Jane Doe,dc=example,dc=com
Note: the specified member attribute type MUST be of DN or NameAndOptionalUID syntax, and the specified object class SHOULD
allow the attribute type.
|