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

Jed Donnelley capability at webstart.com
Wed Sep 17 12:24:23 CDT 2008


At 05:05 PM 9/16/2008, Karp, Alan H wrote:
>Bill Frantz wrote:
> > alan.karp at hp.com (Karp, Alan H) on Thursday, September 11, 2008 wrote:
> >
> > >I contend the installation endowment is the only time you need to
> > grant O(20+) rights.  Per execution
> > >is always(?) O(1).
> >
> > Consider the example of make and its close friend, gcc. In "mature"
> > systems, the make environment is a (usually undocumented) monster
> > of directories and dependencies. It is majorly daunting to new
> > developers. Trying to apply POLA to that environment sends me
> > screaming to, "Just give make everything and lets get on with
> > life."
> >
>Good example, but there are two caveats.  Often, the rights can be 
>collected in O(1) directories.  When that's not the case, you still 
>need to designate the files involved.  I bet someone else (Nothing 
>is impossible for the person who does not have to do it.) can write 
>a Perl script to parse makefiles and provide the appropriate 
>authorities to the process running make.

It seems to me that's equivalent to Bill's "Just give me everything".

One point that wasn't mentioned above is that "everything" here is 
everything read-only.  In my experience the many files that programs 
like make/gcc use are legitimately intended to be world readable as 
read-only.  For those I think a shared directory structure works fine.

There are then two cases that derive from such an example that I 
think might be worth discussing:

1.  The case of "who" gets write access to such make/gcc files and 
how.  I believe this is essentially the case we discussed at HP last 
Friday.  Namely that of Jonathan's focus (as I understand it) where 
you have a large directory structure and you want one or some 
"principal"s to have more access to some limited parts of it.  I'll 
let others who proposed solutions to champion them here if desired.

2.  The case where there is a need to limit even read access to some 
files by some principals - e.g. for proprietary code.  It seems to me 
this isn't too different from #1, except that I can easily imagine 
that there would be large numbers of files involved.  Again I'll cop 
out and let others propose solutions (other than Horton) if they have them.

Perhaps it would be worthwhile to focus the attention of one more HP 
Friday meeting on this topic, just to throw as much clarity on this 
subject as we can while it's fresh in mind?  I'd be interested in 
working through some of the details of the proposals discussed last 
Friday.  To my intuition it seems that the solutions discussed have 
the potential to turn into a "rats nest" of partly duplicated 
directory structures with relatively ad hoc references to either more 
restricted or greater access references (capabilities).

I believe this issue is at the core of Jonathan's "More Heresey: ACLs 
not inherently bad" design challenge:

At 02:07 AM 9/17/2008, Jonathan S. Shapiro wrote:
>2. I still haven't heard a credible answer to the sharing problem that
>doesn't reconstruct ACLs.

Is that right Jonathan?

Regarding PLASH:

At 04:19 AM 9/17/2008, Jonathan S. Shapiro wrote:
>On Wed, 2008-09-17 at 11:52 +0100, Toby Murray wrote:
>...
> >  Secondly, I also wonder why something like Plash
> > wouldn't suit your needs, given that it maintains the POSIX interface
> > whilst allowing fine-grained POLA.

I don't understand why dealing with ports is an issue:

>I'm not clear whether Plash can mediate sockets, for example.

However, with regard to:

>Actually, Plash is the thing that gives me hope that a viable approach
>exists. To answer your question directly, the main problems I see with
>plash are that it is incompletely integrated into the system and there
>are elements in classic UNIX that do not fall within the file system
>mechanism.

I don't see how PLASH solves the problem we are addressing for two reasons:

A.  It uses the Unix file system (users, groups, essentially ACLs, 
etc.) for access control when the power boxes are granting access to files, and

B.  Beyond #A I don't see how PLASH can deal effectively with the 
rash of open calls that face it during a make/gcc 
run.  Hmmm.  Thinking about it a little perhaps I can see a solution 
based on the world read-only thought above.  PLASH could have a 
policy of granting read-only access to all of the commonly needed 
library directories.  Does it do something like that?  Some other 
solution?  Even at that it would seem that PLASH will increase 
overhead (significantly?) by requiring the application's open calls 
to go through it, for it to consult its policy, do the actual open, 
and return the file descriptor through the pipe.

I'd be interested to know how make actually works through PLASH.  Anybody know?

Regarding:

At 04:51 AM 9/17/2008, Jonathan S. Shapiro wrote:
>...
>I'm a bit frustrated because it seems that many people here are having
>difficulty with the concept that the world does not consist entirely of
>leaf objects, and that the capability community has not brought forward
>a satisfactory solution to the any graph sharing scenario in which
>different parties must have distinct access rights.

I agree that the above issue is the core of the problem that we are 
discussing.  This is the problem I tried to address interactively in 
last Friday's HP meeting.  There the participants presented a case 
for using a capability based directory structure (non-Horton) for 
addressing this challenge that was convincing to me at the time.  To 
me it makes sense to ask that group to write up something that could 
be posted to cap-talk.  I'll be happy to work to facilitate that effort.

--Jed  http://www.webstart.com/jed-signature.html 



More information about the cap-talk mailing list