[OpenAFS] Features great and small

Jeffrey Hutzelman jhutz@cmu.edu
Mon, 30 Jul 2001 18:02:33 -0400 (EDT)


On Mon, 30 Jul 2001, Charles Karney wrote:

> * uss has an unnecessary eight-character limit on user names.  I only know
>   about this for the Transarc version.  In fact, I find the whole uss
>   mechanism to be rather clumsy, and have since started using my own scripts
>   to set up accounts.

Yup.  So do most people, including CMU.  While uss might meet the needs of
someone running a small AFS cell in isolation, it really isn't up to the
generic task of user account maintenance.

> * fs setcell is too coarse-grained a way of offering suid functionality.
>   Many sites offer binaries for multiple platforms via AFS.  This means
>   that an suid program for Digital Unix can be run as a suid program on a
>   Solaris system with undefined consequences.  It would be safer to have
>   the suid functionality on a per-volume basis.

Safer, maybe, but a lot more painful for the administrator.  It's also not
as big a problem as you make it out to be.  You can't run a Digital Unix
program at all on a Solaris box; the executable file formats aren't the
same.  Constructing a file which looked executable to both would take some
work, if it is possible at all.

> * Having the Unix find command know about volumes would be useful.  Maybe
>   the -xdev flag should restrain find to the volume it's in.

Maybe, or maybe it should be a different flag altogether.

> (An aside: is GNU find within AFS completely meaningless without -noleaf?)

Pretty much.


> * I would like a convenient way of finding AFS mount points on an AFS
>   client (e.g., a extension of 'find . -type X').  salvager -showmounts
>   offers this functionality on the server side and not in a very managable
>   form.

I think this goes with the above -- if find knew about mount points, it
could use "is a mount point" as a condition, in addition to being able to
avoid crossing them (in fact, just having the condition is enough -- if
you can tell whether something is a mount point, you can write a find
expression that does not cross it).

> * A gotcha with SUID files is that if a cell in -nosuid, then
> 
>      install -m 4755 file directory
> 
>   actually does install the file with the SUID bit on (as you will discover
>   if you subsequently change the cell to -suid).  However, "ls -l" on the
>   directory does not show this.  If you want to find any suid files in AFS
>   you have to run "salvager -showsuid" on the server.  Again the same
>   functionality on the client would be nice.  (With Unix partitions mounted
>   -nosuid, "ls -l" still reports the suid bits.  Could this work with AFS
>   too?)

For the most part, no.  The problem is that the suid bit is usually
applied at the VFS layer, in code that is common to all filesystems.  The
only chance a filesystem like AFS has to influence the process is through
the mode bits it presents for a file.  Since the mode bits returned by
stat(2) are the same bits used to decide whether to change the euid when a
program is executed, they cannot be different.

Of course, there may be some platforms which allow the filesystem to
participate directly in the suid decsion; on such a platform, it would be
possible to return the suid bits to stat without having them take effect. 
But there are few such platforms, if any.

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