>In other words, schema and acl info would be
>accessed through backend.c, as real objects in the directory, stored
>wherever the (now minimal) conf file specified. This would require
>mods to existing code, but would be more flexible than writing a
>"slapd.conf" backend. (One benefit, for example, is that you could
>have a schema/acl server for a bunch of distributed LDAP servers, and
>you'd only have to maintain one "master" schema/acl by using the ldap
>backend as the source for your schema/acl).
This gets quite involved quite fast. I would suggest small
steps. That is, implement an extension to the static ACL system
that used dynamic ACI information.
access *
by aci=aci dynamic[none|auth|compare|search|read|write]
if entry has "aci" attribute, grant access based upon access
control information located in the entries ACI attribute. Access
granted
cannot exceed level specified.
>If the schema and acls are to be part of an LDAP directory, then
>where would they go?
I would suggest per-entry ACIs instead of per-backend-ACLs. Hence
the ACI would be stored as the value an attribute type. (The attribute
type could be defined as user-modifiable, operational attribute
so that it could be added to any existing entry without changing
the entry's objectclass definition... or as a normal attribute type
which would be allowed by an auxilary object class).