--On Friday, June 26, 2009 11:35:32 AM -0400 Jeffrey Altman <[email protected]> wrote:

   1. The existing RXAFS_FetchACL and RXAFS_StoreACL RPCs are specified
      as accepting only a directory FID.  While it is true that the
      OpenAFS file server will accept any FID for the RXAFS_FetchACL
      call and always returns the ACL of the directory, this behavior
      should not be relied upon.   As part of this work new
      RXAFS_FetchACL2 and RXAFS_StoreACL2 RPCs should be added to
      support the new functionality.  If the old RPCs are called, the
      old behavior should be expected.   This permits the new
      RXAFS_FetchACL2 response to not only return the current ACL that
      applies to the specified object but also whether or not that ACL
      is inherited from a parent.  The new RXAFS_StoreACL2 could make
      available options that permit the client to specify things like
      "inherit from parent".  The use of new and old RPCs also provide a
      method for new clients to behavior properly with old servers.

Agree

   2. I believe that the inheritance model that we select must be one
      that is going to reduce the confusion for end users that may be
      forced to use a mixture of old and new clients.  The old clients
      will be able to read the current ACL on an object whether it is
      inherited from the directory or associated specifically with the
      object.  However, the old client is not going to be in a position
      to alter the value of an ACL that isn't associated with a
      directory.  There is not going to be a perfect solution but I
      believe the "inherit until set" model is the one that will work
      best for users that are only using "old clients".  We may need to
      have a restriction that old clients while they can see the value
      of a per-file ACL, they can't change it even though they can
      change the value of the directory's ACL.

Agree. Note that users familiar with AFS are likely to mostly use fs getacl/setacl on directories anyway, but RXAFS_StoreACL on a file should probably fail if the server is file-ACL-aware.

   3. Regarding hard links from multiple directories.  If we select a
      "inherit until set" model, we would either need to prevent the
      creation of such hard links until a per file acl was set or
      automatically create a per file acl based upon the previously
      inherited acl.

Yes, that will be an issue.

   4. I hope the issue surrounding FetchStatus permissions is a
      non-issue.  I'm not as familiar with the behavior of the Unix
      cache manager but in the Windows cache manager the described
      behavior is an optimization to prevent issuing FetchStatus
      requests that can reasonably be determined to fail.  The access
      rights are maintained per object so there will be no inconsistency
      if the FetchStatus on two different objects in the same directory
      provide different access rights.
   5. VLF_DFSFILESET is used in the Unix cache manager.  It is not
      present in the Windows cache manager.  I really do not like the
      idea that we will need to rely on setting flags in the VLDB in
      order to permit proper use of per-file acls.  Adding DFS
      functionality to make it happen also just seems wrong.  Can you
      explain a bit more about what the behaviors of the Unix cache
      manager are if this flag is set or not set?  A quick look shows
      that there are more behavior changes than just access rights.

Like it or not, it's what we must do. Setting this bit is necessary to prevent older cache managers from determine file access by looking primarily at the user's (presumably cached) access rights on the containing directory. The CM understands that some access is controlled by the UNIX u+rw bits on the file and by the AFS 'a' ACL bit on the file, but to get it to handle AFS access rights on a per-file basis, the VLF_DFSFILESET flag must be set.

There are other behavior changes, but none of these are problematic provided the fileserver actually implements the new behavior. These include things like special handling for the two high-order bits of the vnode number on a StoreACL call (if we don't implement DFS default ACL's, then this just requires the fileserver not permit vnode numbers larger than 0x3fffffff, which I believe is already the case for namei), special handling for FetchData lengths with the high bit set (which requires that the fileserver not return negative lengths), etc.


   6. I would like to know what kAFS and Arla do.

Me too. My guess is that kAFS, like the OpenAFS Windows cache manager, does not recognize the VLF_DFSFILESET flag but also does not do the kind of axs-cache sharing which the OpenAFS UNIX cache manager avoids only if that flag is set. But it would be useful if David would speak up.

-- Jeff

_______________________________________________
AFS3-standardization mailing list
[email protected]
http://michigan-openafs-lists.central.org/mailman/listinfo/afs3-standardization

Reply via email to