[cap-talk] More Heresey: ACLs not inherently bad

Charles Landau clandau at macslab.com
Tue Sep 9 00:38:28 CDT 2008


Jonathan S. Shapiro wrote:
> My point is that the execution environment of real-world applications
> tends to involve a very large number of objects that are conventionally
> organized using hierarchical name spaces (directories). It is only
> simple to provide these environments if the name spaces are conveyed to
> the applications as a single "root" capability. 

I'll accept for purpose of discussion that you want to run such programs 
in this way. I think I'm starting to understand one of your core issues:

> If selectivity becomes
> necessary, filtering at exec time becomes a burden on program startup,
> and it becomes better to filter dynamically.

and:

> And somewhere around O(20) capabilities, it
> becomes performance prohibitive to construct those organizations on the
> fly. 

I see at least three designs for passing many capabilities:

(1) Construct a directory containing the capabilities you want to pass, 
and pass the directory to the new process. As you say this is "a burden 
on program startup" and may be "performance prohibitive" because it 
constructs directory entries that may never be used.

(2) Pass an existing full directory/namespace and posit some ACL-like 
mechanism for restricting the new process's access to the objects named 
therein.

(3) Construct a directory-like object (whose behavior is described 
below) and pass a capability to it to the new process to use as its root 
directory/namespace. When the new process first attempts to fetch a 
subdirectory or leaf object from the directory-like object, the latter 
determines whether it wants the new process to have access to that 
object, and if so makes it available for that and subsequent requests. 
Most likely this decision would be the same as in design (1) above.

It seems to me that (3) addresses the performance issues of (1) 
mentioned above, without adding the complexity of an ACL mechanism. Or 
more precisely, it encapsulates the complexity of an access policy 
inside the directory-like object. This encapsulation allows it to be 
viewed as either an ACL mechanism, or (as I prefer) simply an 
optimization of design (1).


More information about the cap-talk mailing list