xfs
[Top] [All Lists]

Re: [PATCH v7 7/7] enable building user namespace with xfs

To: Dwight Engen <dwight.engen@xxxxxxxxxx>
Subject: Re: [PATCH v7 7/7] enable building user namespace with xfs
From: "Serge E. Hallyn" <serge@xxxxxxxxxx>
Date: Tue, 6 Aug 2013 15:11:32 +0000
Cc: Ben Myers <bpm@xxxxxxx>, xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20130801121726.08dd3123@xxxxxxxxxx>
References: <20130729230709.11033b2d@xxxxxxxxxx> <20130730234021.GR3111@xxxxxxx> <20130731002119.GR13468@dastard> <20130731132523.GS3111@xxxxxxx> <20130731232852.GE7118@dastard> <20130801150643.GV3111@xxxxxxx> <20130801121726.08dd3123@xxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
Quoting Dwight Engen (dwight.engen@xxxxxxxxxx):
> On Thu, 1 Aug 2013 10:06:43 -0500
> Ben Myers <bpm@xxxxxxx> wrote:
> 
> > Dave,
> > 
> > On Thu, Aug 01, 2013 at 09:28:52AM +1000, Dave Chinner wrote:
> > > On Wed, Jul 31, 2013 at 08:25:23AM -0500, Ben Myers wrote:
> > > > Hey,
> > > > 
> > > > On Wed, Jul 31, 2013 at 10:21:19AM +1000, Dave Chinner wrote:
> > > > > On Tue, Jul 30, 2013 at 06:40:21PM -0500, Ben Myers wrote:
> > > > > > On Mon, Jul 29, 2013 at 11:07:09PM -0400, Dwight Engen wrote:
> > > > > > > >From e6a9ee0cfa0ed40484f66bc1726dc19de36038b8 Mon Sep 17
> > > > > > > >00:00:00 2001
> > > > > > > From: Dwight Engen <dwight.engen@xxxxxxxxxx>
> > > > > > > Date: Tue, 2 Jul 2013 09:52:54 -0400
> > > > > > > Subject: [PATCH 7/7] enable building user namespace with xfs
> > > > > > > 
> > > > > > > Signed-off-by: Dwight Engen <dwight.engen@xxxxxxxxxx>
> > > > > > 
> > > > > > Was there a patch running around to limit bulkstat to
> > > > > > init_user_ns?  Any other items that needed to be addressed
> > > > > > before applying this patch?
> > > > > 
> > > > > Bulkstat has a capable(CAP_SYS_ADMIN) check and therefore can
> > > > > only be executed in the init name space. Similarly, all the
> > > > > open-by-handle interfaces have the same capable() checks so
> > > > > they can only be executed int he init name space, too.
> > > > 
> > > > Gah.  I was under the impression that you could have a process
> > > > with CAP_SYS_ADMIN in a namespace other than init_user_ns.
> > > 
> > > Ben, until about a week and a half ago I was also working under that
> > > same understanding as you.
> > 
> > Well huh.  According to Dwight you can have a process with
> > CAP_SYS_ADMIN in a namespace other than init_user_ns.  Kinda cool,
> > IMO.
> 
> Yeah, see commit 3486740a and cap_capable(). Took me a bit to grok
> that for loop, but I think the semantics are that if you are in a non
> init_user_ns, you can start from current_user_ns() looking for a cap

To be precise, you're not looking for a cap in the parent ns.  You're
checking whether the subject is the creator of one of the object's
namespace's parents.

> and walk back the heirarchy (userns's can be nested) but it won't ever
> check in init_user_ns, and so by definition you have no capabilities
> in init_user_ns.

You also have no caps in any of your parent namespaces.  The loop is
checking over the *object*'s parents to see if the subject owns them.
I'ts not looping over the *subject*'s parents, as they do not grant
any privilege.  Only the subject's bottom-most credentials grant
privilege.

> ie. if you are in a userns, you might be nsown_capable(CAP_SYS_ADMIN)
> but you cannot ever be capable(CAP_SYS_ADMIN). Thats my understanding
> anyway :)

Yup.

-serge

<Prev in Thread] Current Thread [Next in Thread>