*
[dn[.<dnstyle>]=<DN>]
[filter=<ldapfilter>]
- [attrs=<attrlist>]
+ [attrs=<attrlist>[ val[.<style>]=<attrval>]]
.fi
.LP
The wildcard
indicating access to the entry's children. ObjectClass names may also
be specified in this list, which will affect all the attributes that
are required and/or allowed by that objectClass.
+Actually, names in
+.B <attrlist>
+that are prefixed by
+.B @
+are directly treated as objectClass names, while names that
+do not correspond to an attribute type are also searched
+in the objectclass set.
+This latter behavior is deprecated and might not be supported
+in future releases.
+A name prefixed by
+.B !
+is also treated as an objectClass, but in this case the access rule
+affects the attributes that are not required nor allowed
+by that objectClass.
.LP
Using the form
.B attrs=<attr> val[.<style>]=<value>
of
.B exact
(the default) uses the attribute's equality matching rule to compare the
-value. If the
+value. If the value
.B <style>
is
.BR regex ,
the provided value is used as a regular expression pattern.
+If the attribute has DN syntax, the value
+.B <style>
+can be any of
+.BR base ,
+.BR onelevel ,
+.B subtree
+or
+.BR children ,
+resulting in base, onelevel, subtree or children match, respectively.
.LP
The dn, filter, and attrs statements are additive; they can be used in sequence
to select entities the access rule applies to based on naming context,
attribute).
.SH CAVEATS
It is strongly recommended to explicitly use the most appropriate
-DN
-.BR style ,
+.BR <dnstyle> ,
to avoid possible incorrect specifications of the access rules as well
as for performance (avoid unrequired regex matching when an exact
match suffices) reasons.
by ...
.fi
.LP
+When writing submatch rules, it may be convenient to avoid unnecessary
+.B regex
+.B <dnstyle>
+use; for instance, to allow access to the subtree of the user
+that matches the
+.B what
+clause, one could use
+.LP
+.nf
+ access to dn.regex="^(.+,)?uid=([^,]+),dc=example,dc=com$$"
+ by dn.regex="^uid=$1,dc=example,dc=com$$" write
+ by ...
+.fi
+.LP
+However, since all that is required in the
+.B to
+clause is substring expansion, a more efficient solution is
+.LP
+.nf
+ access to dn.regex="^(.+,)?uid=([^,]+),dc=example,dc=com$$"
+ by dn.exact,expand="uid=$1,dc=example,dc=com" write
+ by ...
+.fi
+.LP
+In fact, while a
+.B <dnstyle>
+of
+.B regex
+implies substring expansion,
+.BR exact ,
+as well as all the other DN specific
+.B <dnstyle>
+values, does not, so it must be explicitly requested.
+.LP
.SH FILES
.TP
ETCDIR/slapd.conf