[AFS3-std] Per-file ACLs - a few items for discussion

Marc Dionne marc.c.dionne@gmail.com
Sat, 27 Jun 2009 13:39:27 -0400


On 06/27/2009 12:15 PM, Jeffrey Altman wrote:
> So yes, we have a problem.   Using VFL_DFSFILESET is not going to
> provide a method of updating existing clients.  The behavior for a large
> number of existing clients is going to be that the directory ACL takes
> precedence regardless of what per-file ACLs are set.  As a result there
> is (as you describe) an information leakage problem.  We do not have to
> worry about writes because those will be enforced by the file server.
> Its just reads on cached objects which have a more restrictive policy
> than that of the directory.
>
> I see two possible options when the client does not offer the "I support
> per-file ACLS capability":
>
>     1. if per-file ACLs are set on objects within a directory, the ACL
>        reported by the old RPCs becomes the most restrictive ACL (which
>        is going to be messy)
>     2. if per-file ACLs are set on object within a directory, the ACL
>        reported by the old RPCs is empty thereby preventing access from
>        clients that would leak the data.
>
> Any other ideas?
>
> Jeffrey Altman

First off I believe that clients determine the access rights based on 
the CallerAccess and AnonymousAccess fields in the FetchStatus 
structure, not on the actual ACL returned from FetchACL.  So this type 
of change would affect all RPCs that return a FetchStatus structure, not 
just the new ACL RPCs.  The file server would have to rely on more than 
the use of the new RPCs (ex: client capabilities) to determine how to 
evaluate the access rights.

These adjusted rights would also have to be enforced by other calls such 
as FetchData - but I think this relies on the same bits of code anyway.

1. means that granting additional access to a file (wrt the parent 
directory) through a file ACL would not work for old clients.  That may 
be acceptable, but it depends on what people intend to do with the new 
facility.  Of course if it's an issue they have the option to upgrade 
the clients.
2. seems too restrictive - setting any ACL on a file would make it 
unusable by old clients.

Both of these mean a user we can have different rights to a file 
depending on the client used - not great, but better than the cache 
leakage scenario.

Marc