[OpenAFS] Kerberos 5 cache in /tmp

John Rudd jrudd@ucsc.edu
Wed, 7 Apr 2004 19:50:30 -0700


On Apr 7, 2004, at 3:58 PM, Rodney M Dyer wrote:

> At 06:26 PM 4/7/2004, you wrote:
>
>> Not that an in-memory credential cache would make any difference in  
>> this situation.
>> If you have root privs you can access it.  This is true on Windows as  
>> well.  If
>> you are SYSTEM you can do whatever you want.
>
> True.  But that problem only occurs because the kernel code allows all  
> memory to be read by "root".  It would be nice if all OS's has a  
> "protected store" memory area who's sections could only be mapped to  
> each authenticated user.  Don't ask me how...I just work here.
>

Capabilities solve that problem.  With a capability OS, all OS objects  
(processes, files, directories, device drivers, etc.) are distinct  
entities that have a unique identity and a unique set of  
"capabilities".  The capability is like an ACL, in that it specifies  
exactly what each other object is or isn't allowed to do to that  
object.  In a combination of OO and AFS thinking, think of it like  
every object has a token, and instead of an AFS-like defined set of ACL  
attributes, every method for that object ("read", "write", "open",  
"delete", "send", "encrypt", "decrypt", etc.) has a list of other  
objects that may or may not use that method.

But that's a sort of shallow summary from someone who hasn't really  
looked at capabilities in a few years.  Unix would require a lot of  
re-working to function with capabilities (for one, the unix style  
permission model is _gone_ in a capability OS).  I'm not sure how well  
mach would adapt to it ... and I'm not sure what it would look like to  
have a mach kernel with a capability middle-layer and then a unix layer  
on top of that (but, that has been my idea about how to bring  
capabilities to unix).  It may end up that your "unix" environment ends  
up being 1 capability object, or something ... which means you're not  
really using capabilities within unix.

AFS and Kerberos have a problem here in that everytime you spawn a  
process or create a file, you's have to create a new principle.  So,  
instead of using AFS/Kerberos as your identity model, you have to think  
of the kerberos ticket or AFS token as a specific object, and then the  
ticket/token object has ACLs for who and what may access it (and how  
they may access it).


Anyways, for more info about Capabilities (now that I've mentioned them  
twice in a short time), here's some links:

(google search that has some good results)

http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF 
-8&q=Capability+Based+Operating+Systems&btnG=Google+Search

The first 3 major results are "EROS", "J-Kernel" and "Cap-lore".  EROS  
is a capability oriented OS, which looks interesting (and their "about"  
pages do describe the basic concepts of capability systems).  Cap-lore  
is oriented around the theories in general.  I haven't seen nor used  
J-Kernel.

EROS' description of Capabilities can be found at:

http://www.eros-os.org/project/novelty.html#capabilities

(I've also had the plan-9 people tell me that they think of their file  
name space to effectively be a capability system, in that being able to  
name an object is the same as being able to use/access it, so if you  
don't want your inheritors to access you, you remove yourself from  
their name space ... but it's not a strict one, because they can  
essentially add you back without your being able to deny that)