Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Sep 2000 08:58:37 -0400 (EDT)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Boris Popov <bp@butya.kz>
Cc:        freebsd-fs@FreeBSD.org, trustedbsd-discuss@TrustedBSD.org
Subject:   Re: VOP_ACCESS() and new VADMIN/VATTRIB?
Message-ID:  <Pine.NEB.3.96L.1000927085314.88777D-100000@fledge.watson.org>
In-Reply-To: <Pine.BSF.4.10.10009271435410.69716-100000@lion.butya.kz>

next in thread | previous in thread | raw e-mail | index | archive | help

On Wed, 27 Sep 2000, Boris Popov wrote:

> On Tue, 26 Sep 2000, Robert Watson wrote:
> 
> > I'd like to propose that an existing VADMIN flag be added determining
> > whether or not the passed credentials are permitted to administer the
> > file.  Here is a brief itemization of locations in the code where i->uid
> > checks would be replaced with VOP_ACCESS(vp, ... VADMIN ...) calls, with
> > some possible omissions:
> 
> 	Interesting, but will there a strict policy which declares
> priority of this flag and its relation with suser() ?

The semantics will not change: VADMIN may be exercised on a file either by
virtue of being the owner of the file (in the case of UFS-like file
systems invoking vaccess()), or by virtue of possessing appropriate
privilege.  In the base FreeBSD tree, appropriate privilege will be a
successful invocation of the suser() call.  In my capabilities tree, it
will generally correspond to CAP_FOWNER, or the capability to override
access control failure based on not owning the file system object.

Although I haven't finished the integration of the changes yet, I believe
the patch for kern/vfs_subr.c would look something like the following:

--- vfs_subr.c  2000/09/21 15:55:55     1.277
+++ vfs_subr.c  2000/09/27 12:55:36
@@ -2976,6 +2976,7 @@
        /* Check the owner. */
        if (cred->cr_uid == file_uid) {
+               dac_granted |= VADMIN;
                if (file_mode & S_IXUSR)
                        dac_granted |= VEXEC;
                if (file_mode & S_IRUSR)

That is, if you are the owner of the file by the traditional owner
definition, then the VADMIN right is added to the mask of rights granted
via the discretionary access control mechanism.  When the check occurs and
fails, it is followed by a check for appropriate privilege.

You could think of this as the "loose end" category for access control
checks, but actually all of the rights associated with VADMIN fit quite
nicely into the category "access granted based on owning the file", or the
shorter "administrative rights for the file" (VADMIN).  I would be willing
to consider arguments for giving VADMIN a different name, possibly VOWNER,
VSETATTR, etc.

  Robert N M Watson 

robert@fledge.watson.org              http://www.watson.org/~robert/
PGP key fingerprint: AF B5 5F FF A6 4A 79 37  ED 5F 55 E9 58 04 6A B1
TIS Labs at Network Associates, Safeport Network Services





To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-fs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.NEB.3.96L.1000927085314.88777D-100000>