All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vivek Goyal <vgoyal@redhat.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: virtio-fs-list <virtio-fs@redhat.com>,
	Luis Henriques <lhenriques@suse.de>,
	qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [PATCH 1/3] virtiofsd: Add an option to enable/disable posix acls
Date: Wed, 17 Feb 2021 10:07:21 -0500	[thread overview]
Message-ID: <20210217150721.GB31184@redhat.com> (raw)
In-Reply-To: <CAJfpegspJGL_W+8zaXyHfuAhtB_Q7V0YyOZJEhpCd=KaL_W71A@mail.gmail.com>

On Wed, Feb 17, 2021 at 09:53:04AM +0100, Miklos Szeredi wrote:
> On Wed, Feb 17, 2021 at 12:36 AM Vivek Goyal <vgoyal@redhat.com> wrote:
> >
> > fuse has an option FUSE_POSIX_ACL which needs to be opted in by fuse
> > server to enable posix acls.
> >
> > Add virtiofsd option "-o posix_acl/no_posix_acl" to let users enable/disable
> > posix acl support. By default it is disabled as of now.
> 
> If I read the code correctly, then no_posix_acl will still result in
> system.posix_acl_* xattr ops being passed through to virtiofsd, which
> will forward them to the underlying fs, resulting in posix acls
> appearing to work, but doing so incorrectly (i.e. no change from
> previous behavior).

Yes, and this is confuing me a lot. fuse server has not indicated
support for POSIX_ACL, still user can get and set ACLs. fuse_xattr_get()
and fuse_xattr_set() must be kicking in.

I do see that we have fuse_no_acl_xattr_handlers and that should
be able to block setting/getting acls if acl support is not there
but we register it only if we are not mounted in init_user_ns.

        if (sb->s_user_ns != &init_user_ns)
                sb->s_xattr = fuse_no_acl_xattr_handlers;

So question is, should fuse client be fixed as well to block setting
and getting acls if fuse server does not support ACL? Or we now need
to keep it around for backward compatibility.

> Possibly better would be to have three different
> modes of operation:
> 
> 1) no option: default fall back to broken acl support for backward
> compat (this could be removed in the future)

What about FUSE_DONT_MASK in this mode. ACLs are not enabled but
user can get/set these. Should that mean we still honor default
acl and not apply umask?

Probably I should opt for FUSE_DONT_MASK only if posix_acl support is
enabled. Given this does not work even today (atleast for virtiofs), so
it is not a backward compatibility issue. And its confusing anyway.

> 2) no_posix_acl: really disable acl support

That is block getting and setting system.posix_acl xattr. Will do that.
I think we will have to block it even if somebody has remapped xattrs
in virtiofsd.

> 3) posix_acl: enable proper acl support

Thanks
Vivek

> 
> Thanks,
> Miklos
> 



WARNING: multiple messages have this Message-ID (diff)
From: Vivek Goyal <vgoyal@redhat.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: virtio-fs-list <virtio-fs@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [Virtio-fs] [PATCH 1/3] virtiofsd: Add an option to enable/disable posix acls
Date: Wed, 17 Feb 2021 10:07:21 -0500	[thread overview]
Message-ID: <20210217150721.GB31184@redhat.com> (raw)
In-Reply-To: <CAJfpegspJGL_W+8zaXyHfuAhtB_Q7V0YyOZJEhpCd=KaL_W71A@mail.gmail.com>

On Wed, Feb 17, 2021 at 09:53:04AM +0100, Miklos Szeredi wrote:
> On Wed, Feb 17, 2021 at 12:36 AM Vivek Goyal <vgoyal@redhat.com> wrote:
> >
> > fuse has an option FUSE_POSIX_ACL which needs to be opted in by fuse
> > server to enable posix acls.
> >
> > Add virtiofsd option "-o posix_acl/no_posix_acl" to let users enable/disable
> > posix acl support. By default it is disabled as of now.
> 
> If I read the code correctly, then no_posix_acl will still result in
> system.posix_acl_* xattr ops being passed through to virtiofsd, which
> will forward them to the underlying fs, resulting in posix acls
> appearing to work, but doing so incorrectly (i.e. no change from
> previous behavior).

Yes, and this is confuing me a lot. fuse server has not indicated
support for POSIX_ACL, still user can get and set ACLs. fuse_xattr_get()
and fuse_xattr_set() must be kicking in.

I do see that we have fuse_no_acl_xattr_handlers and that should
be able to block setting/getting acls if acl support is not there
but we register it only if we are not mounted in init_user_ns.

        if (sb->s_user_ns != &init_user_ns)
                sb->s_xattr = fuse_no_acl_xattr_handlers;

So question is, should fuse client be fixed as well to block setting
and getting acls if fuse server does not support ACL? Or we now need
to keep it around for backward compatibility.

> Possibly better would be to have three different
> modes of operation:
> 
> 1) no option: default fall back to broken acl support for backward
> compat (this could be removed in the future)

What about FUSE_DONT_MASK in this mode. ACLs are not enabled but
user can get/set these. Should that mean we still honor default
acl and not apply umask?

Probably I should opt for FUSE_DONT_MASK only if posix_acl support is
enabled. Given this does not work even today (atleast for virtiofs), so
it is not a backward compatibility issue. And its confusing anyway.

> 2) no_posix_acl: really disable acl support

That is block getting and setting system.posix_acl xattr. Will do that.
I think we will have to block it even if somebody has remapped xattrs
in virtiofsd.

> 3) posix_acl: enable proper acl support

Thanks
Vivek

> 
> Thanks,
> Miklos
> 


  reply	other threads:[~2021-02-17 15:09 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-16 23:36 [PATCH 0/3] virtiofsd: Add options to enable/disable posix acl Vivek Goyal
2021-02-16 23:36 ` [Virtio-fs] " Vivek Goyal
2021-02-16 23:36 ` [PATCH 1/3] virtiofsd: Add an option to enable/disable posix acls Vivek Goyal
2021-02-16 23:36   ` [Virtio-fs] " Vivek Goyal
2021-02-17  8:53   ` Miklos Szeredi
2021-02-17  8:53     ` [Virtio-fs] " Miklos Szeredi
2021-02-17 15:07     ` Vivek Goyal [this message]
2021-02-17 15:07       ` Vivek Goyal
2021-02-17 15:23       ` Miklos Szeredi
2021-02-17 15:23         ` [Virtio-fs] " Miklos Szeredi
2021-02-16 23:36 ` [PATCH 2/3] virtiofsd: Add umask to seccom allow list Vivek Goyal
2021-02-16 23:36   ` [Virtio-fs] " Vivek Goyal
2021-02-16 23:36 ` [PATCH 3/3] virtiofsd: Change umask if posix acls are enabled Vivek Goyal
2021-02-16 23:36   ` [Virtio-fs] " Vivek Goyal
2021-02-16 23:45 ` [PATCH 0/3] virtiofsd: Add options to enable/disable posix acl no-reply
2021-02-16 23:45   ` [Virtio-fs] " no-reply
2021-02-17  9:32 ` Luis Henriques
2021-02-17  9:32   ` [Virtio-fs] " Luis Henriques

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=20210217150721.GB31184@redhat.com \
    --to=vgoyal@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=lhenriques@suse.de \
    --cc=miklos@szeredi.hu \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=virtio-fs@redhat.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.