All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Brauner <brauner@kernel.org>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: "Amir Goldstein" <amir73il@gmail.com>,
	"Miklos Szeredi" <mszeredi@redhat.com>,
	"Christoph Hellwig" <hch@lst.de>,
	overlayfs <linux-unionfs@vger.kernel.org>,
	"Aleksa Sarai" <cyphar@cyphar.com>,
	"Giuseppe Scrivano" <gscrivan@redhat.com>,
	"Rodrigo Campos Catelin" <rodrigo@sdfg.com.ar>,
	"Seth Forshee" <sforshee@digitalocean.com>,
	"Luca Bocassi" <luca.boccassi@microsoft.com>,
	"Lennart Poettering" <mzxreary@0pointer.de>,
	"Stéphane Graber" <stgraber@ubuntu.com>
Subject: Re: [PATCH v5 13/19] ovl: handle idmappings for layer lookup
Date: Thu, 28 Apr 2022 12:30:46 +0200	[thread overview]
Message-ID: <20220428103046.kizonrkl7h2f2uvc@wittgenstein> (raw)
In-Reply-To: <CAJfpegtXfrgb3qQTvqu6mtunhFjC-FwXcRvqMY4h-ZcjWyhUFg@mail.gmail.com>

On Thu, Apr 28, 2022 at 12:10:24PM +0200, Miklos Szeredi wrote:
> On Thu, 7 Apr 2022 at 13:23, Christian Brauner <brauner@kernel.org> wrote:
> >
> > Make the two places where lookup helpers can be called either on lower
> > or upper layers take the mount's idmapping into account. To this end we
> > pass down the mount in struct ovl_lookup_data. It can later also be used
> > to construct struct path for various other helpers. This is needed to
> > support idmapped base layers with overlay.
> >
> > Cc: <linux-unionfs@vger.kernel.org>
> > Tested-by: Giuseppe Scrivano <gscrivan@redhat.com>
> > Reviewed-by: Amir Goldstein <amir73il@gmail.com>
> > Signed-off-by: Christian Brauner (Microsoft) <brauner@kernel.org>
> > ---
> > /* v2 */
> > unchanged
> >
> > /* v3 */
> > unchanged
> >
> > /* v4 */
> > - Vivek Goyal <vgoyal@redhat.com>:
> >   - s/ovl_upper_idmap()/ovl_upper_mnt_userns()/g
> >
> > /* v5 */
> > unchanged
> > ---
> >  fs/overlayfs/export.c  |  3 ++-
> >  fs/overlayfs/namei.c   | 14 ++++++++------
> >  fs/overlayfs/readdir.c | 10 +++++-----
> >  3 files changed, 15 insertions(+), 12 deletions(-)
> >
> > diff --git a/fs/overlayfs/export.c b/fs/overlayfs/export.c
> > index ebde05c9cf62..5acf353d160b 100644
> > --- a/fs/overlayfs/export.c
> > +++ b/fs/overlayfs/export.c
> > @@ -391,7 +391,8 @@ static struct dentry *ovl_lookup_real_one(struct dentry *connected,
> >          * pointer because we hold no lock on the real dentry.
> >          */
> >         take_dentry_name_snapshot(&name, real);
> > -       this = lookup_one_len(name.name.name, connected, name.name.len);
> > +       this = lookup_one(mnt_user_ns(layer->mnt), name.name.name,
> > +                         connected, name.name.len);
> 
> This one is tricky.  It's doing a lookup on overlay, so messing with
> the underlying mnt_userns is definitely wrong.
> 
> Is the mnt_userns needed for permission checking?   Possibly in that
> case the permission checking needs to be skipped altogether, since
> it's doing an fh -> dentry lookup which should succeed regardless of
> caller's caps.

If capabilities are checked then it's always caller's user namespace
that is used (Ofc, exceptions being filesystem-wide operations where
capabilities in the filesystem's userns are needed but that doesn't
apply here.).

Nothing has changed with the introduction of the mnt_userns in the
area of capability checking. IOW, the mnt_userns isn't used for
capability checks as that would be a major permission model change
overall (It might have applications in the future ofc.).

The mnt_userns matters for permission checking only in so far as it is
used to map the k{g,u}ids according to the mount and so is relevant in
only that sense in inode_permission().

If this is doing a lookup on an overlay and the relevant mount isn't
supposed to be idmapped then the simple thing to do is to pass
&init_user_ns.

Could you explain what "lookup on overlay" means here, i.e. what mount
is relevant?

  reply	other threads:[~2022-04-28 10:30 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-07 11:21 [PATCH v5 00/19] overlay: support idmapped layers Christian Brauner
2022-04-07 11:21 ` [PATCH v5 01/19] fs: add two trivial lookup helpers Christian Brauner
2022-04-07 11:21 ` [PATCH v5 02/19] exportfs: support idmapped mounts Christian Brauner
2022-04-07 11:21 ` [PATCH v5 03/19] ovl: use wrappers to all vfs_*xattr() calls Christian Brauner
2022-04-07 11:21 ` [PATCH v5 04/19] ovl: pass ofs to creation operations Christian Brauner
2022-04-07 11:21 ` [PATCH v5 05/19] ovl: add ovl_upper_mnt_userns() wrapper Christian Brauner
2022-04-07 11:21 ` [PATCH v5 06/19] ovl: handle idmappings in creation operations Christian Brauner
2022-04-07 11:21 ` [PATCH v5 07/19] ovl: pass ofs to setattr operations Christian Brauner
2022-04-07 11:21 ` [PATCH v5 08/19] ovl: pass layer mnt to ovl_open_realfile() Christian Brauner
2022-04-07 11:21 ` [PATCH v5 09/19] ovl: use ovl_do_notify_change() wrapper Christian Brauner
2022-04-07 11:21 ` [PATCH v5 10/19] ovl: use ovl_lookup_upper() wrapper Christian Brauner
2022-04-07 11:21 ` [PATCH v5 11/19] ovl: use ovl_path_getxattr() wrapper Christian Brauner
2022-04-07 11:21 ` [PATCH v5 12/19] ovl: handle idmappings for layer fileattrs Christian Brauner
2022-04-07 11:21 ` [PATCH v5 13/19] ovl: handle idmappings for layer lookup Christian Brauner
2022-04-28 10:10   ` Miklos Szeredi
2022-04-28 10:30     ` Christian Brauner [this message]
2022-04-28 10:57       ` Amir Goldstein
2022-04-28 11:43         ` Miklos Szeredi
2022-04-28 11:30       ` Miklos Szeredi
2022-04-28 11:35         ` Miklos Szeredi
2022-04-28 11:50           ` Christian Brauner
2022-04-07 11:21 ` [PATCH v5 14/19] ovl: store lower path in ovl_inode Christian Brauner
2022-04-07 11:21 ` [PATCH v5 15/19] ovl: use ovl_copy_{real,upper}attr() wrappers Christian Brauner
2022-04-07 11:21 ` [PATCH v5 16/19] ovl: handle idmappings in ovl_permission() Christian Brauner
2022-04-07 11:21 ` [PATCH v5 17/19] ovl: handle idmappings in layer open helpers Christian Brauner
2022-04-07 11:21 ` [PATCH v5 18/19] ovl: handle idmappings in ovl_xattr_{g,s}et() Christian Brauner
2022-04-07 11:21 ` [PATCH v5 19/19] ovl: support idmapped layers Christian Brauner
2022-04-07 11:21 ` [PATCH v5] common: allow to run all tests on idmapped mounts Christian Brauner
2022-04-13  7:49   ` Christian Brauner
2022-04-28 14:39 ` [PATCH v5 00/19] overlay: support idmapped layers Miklos Szeredi
2022-04-28 14:47   ` Christian Brauner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220428103046.kizonrkl7h2f2uvc@wittgenstein \
    --to=brauner@kernel.org \
    --cc=amir73il@gmail.com \
    --cc=cyphar@cyphar.com \
    --cc=gscrivan@redhat.com \
    --cc=hch@lst.de \
    --cc=linux-unionfs@vger.kernel.org \
    --cc=luca.boccassi@microsoft.com \
    --cc=miklos@szeredi.hu \
    --cc=mszeredi@redhat.com \
    --cc=mzxreary@0pointer.de \
    --cc=rodrigo@sdfg.com.ar \
    --cc=sforshee@digitalocean.com \
    --cc=stgraber@ubuntu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.