[OpenAFS] To read a file from a directory whose ACL is r-l (read permission but no lookup permission)

Jeffrey Hutzelman jhutz@cmu.edu
Tue, 13 Sep 2005 12:37:36 -0400


On Tuesday, September 13, 2005 16:10:35 +0300 acemi <acemi@spymac.com> 
wrote:

> Hello,
>
> I want that users can't browse the directory's content (files list) but
> they can open/read a file if they know the name of the file. To do that I
> set r-l (read permission but no lookup permision) as ACL, but user can't
> read the file in this case.
>
> I googled to learn how I can do but I can't find a solution. Is there a
> way to do that?

No, you can't do that.
The 'l' permission grants the ability to read the directory and to do 
lookups in it.  The 'r' permission grants the ability to read the contents 
of files in that directory.  Since you need to do a directory lookup in 
order to know the file's FID, you can't access a file without 'l' on the 
directory containing it.


> If no, to hack some part of source code will be a solution? Which parts?
> is "viced/afsfileprocs.c" the file which I need to hack?

No.  In AFS, directory lookups are done on the client.  The client needs a 
copy of the directory in order to do lookups, and once it has it, it can do 
whatever it wants.  You could distribute to your users a modified client 
which prevented them from listing directories (or directories on which they 
don't have a particular ACL bit, or whatever).  But you can't prevent your 
users from downloading and using an unmodified client to list the contents 
of any directory in which they can do lookups.

Also, ignoring the snide comment about Windows, Frank Burkhardt is right. 
If you want to control which users have access to which files, then put 
them in directories with appropriate ACL's.  Use symlinks if you have to.
A wise man once said, "Security through obscurity is worse than no security 
at all".


-- Jeffrey T. Hutzelman (N3NHS) <jhutz+@cmu.edu>
   Sr. Research Systems Programmer
   School of Computer Science - Research Computing Facility
   Carnegie Mellon University - Pittsburgh, PA