qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: "Ján Tomko" <jtomko@redhat.com>
Cc: virtio-fs@redhat.com, stefanha@redhat.com, qemu-devel@nongnu.org,
	vgoyal@redhat.com
Subject: Re: [PATCH v2 3/6] tools/virtiofsd: xattr name mappings: Add option
Date: Thu, 10 Sep 2020 19:38:46 +0100	[thread overview]
Message-ID: <20200910183846.GO2814@work-vm> (raw)
In-Reply-To: <20200909112012.GD1377607@lpt>

* Ján Tomko (jtomko@redhat.com) wrote:
> On a Thursday in 2020, Dr. David Alan Gilbert (git) wrote:
> > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> > 
> > Add an option to define mappings of xattr names so that
> > the client and server filesystems see different views.
> > This can be used to have different SELinux mappings as
> > seen by the guest, to run the virtiofsd with less privileges
> > (e.g. in a case where it can't set trusted/system/security
> > xattrs but you want the guest to be able to), or to isolate
> > multiple users of the same name; e.g. trusted attributes
> > used by stacking overlayfs.
> > 
> > A mapping engine is used wit 3 simple rules; the rules can
> > be combined to allow most useful mapping scenarios.
> > The ruleset is defined by -o xattrmap='rules...'.
> > 
> > This patch doesn't use the rule maps yet.
> > 
> > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > ---
> > docs/tools/virtiofsd.rst         |  55 ++++++++++++
> > tools/virtiofsd/passthrough_ll.c | 148 +++++++++++++++++++++++++++++++
> > 2 files changed, 203 insertions(+)
> > 
> > diff --git a/docs/tools/virtiofsd.rst b/docs/tools/virtiofsd.rst
> > index 824e713491..2efa16d3c5 100644
> > --- a/docs/tools/virtiofsd.rst
> > +++ b/docs/tools/virtiofsd.rst
> > @@ -107,6 +107,60 @@ Options
> >   performance.  ``auto`` acts similar to NFS with a 1 second metadata cache
> >   timeout.  ``always`` sets a long cache lifetime at the expense of coherency.
> > 
> > +xattr-mapping
> > +-------------
> > +
> > +By default the name of xattr's used by the client are passed through to the server
> > +file system.  This can be a problem where either those xattr names are used
> > +by something on the server (e.g. selinux client/server confusion) or if the
> > +virtiofsd is running in a container with restricted priviliges where it cannot
> 
> privileges

Fixed.

> > +access some attributes.
> > +
> > +A mapping of xattr names can be made using -o xattrmap=mapping where the ``mapping``
> > +string consists of a series of rules.
> > +
> > +The first matching rule terminates the mapping.
> > +
> > +Each rule consists of a number of fields separated with a separator that is the
> > +first non-white space character in the rule.  This separator must then be used
> > +for the whole rule.
> > +White space may be added before and after each rule.
> > +Using ':' as the separator a rule is of the form:
> > +
> > +``:scope:type:key:prepend:``
> > +
> > +**scope** is:
> > +
> > +- 'client' - match 'key' against a xattr name from the client for
> > +             setxattr/getxattr/removexattr
> > +- 'server' - match 'prepend' against a xattr name from the server
> > +             for listxattr
> > +- 'all' - can be used to match both cases.
> > +
> > +**type** is one of:
> > +
> > +- 'prefix' - If 'key' matches the client then the 'prepend'
> > +  is added before the name is passed to the server.
> > +  For a server case, the prepend is tested and stripped
> > +  if matching.
> > +
> > +- 'ok' - The attribute name is OK and passed through to
> > +  the server unchanged.
> > +
> > +- 'bad' - If a client tries to use this name it's
> > +  denied using EPERM; when the server passes an attribute
> > +  name matching it's hidden.
> > +
> > +**key** is a string tested as a prefix on an attribute name originating
> > +on the client.  It maybe empty in which case a 'client' rule
> > +will always match on client names.
> > +
> > +**prepend** is a string tested as a prefix on an attribute name originiating
> 
> originating

Done.

> > +on the server, and used as a new prefix.  It maybe empty
> 
> may be

OK

> > +in which case a 'server' rule will always match on all names from
> > +the server.
> > +
> > +
> > Examples
> > --------
> > 
> > @@ -123,3 +177,4 @@ Export ``/var/lib/fs/vm001/`` on vhost-user UNIX domain socket
> >       -numa node,memdev=mem \
> >       ...
> >   guest# mount -t virtiofs myfs /mnt
> > +
> 
> git complains about trailing whitespace at EOF

Eaten.

Dave

> Jano


-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK



  reply	other threads:[~2020-09-10 18:52 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-27 15:36 [PATCH v2 0/6] virtiofsd xattr name mappings Dr. David Alan Gilbert (git)
2020-08-27 15:36 ` [PATCH v2 1/6] virtiofsd: Silence gcc warning Dr. David Alan Gilbert (git)
2020-09-09 11:16   ` Ján Tomko
2020-10-07 10:42   ` Dr. David Alan Gilbert
2020-08-27 15:36 ` [PATCH v2 2/6] virtiofsd: Add printf checking to fuse_log Dr. David Alan Gilbert (git)
2020-08-27 15:36 ` [PATCH v2 3/6] tools/virtiofsd: xattr name mappings: Add option Dr. David Alan Gilbert (git)
2020-09-09 11:20   ` Ján Tomko
2020-09-10 18:38     ` Dr. David Alan Gilbert [this message]
2020-09-11 21:13   ` [Virtio-fs] " Vivek Goyal
2020-09-18 17:38     ` Dr. David Alan Gilbert
2020-10-20 17:20       ` Vivek Goyal
2020-10-06 15:51   ` Christophe de Dinechin
2020-10-14 15:40     ` Dr. David Alan Gilbert
2020-08-27 15:36 ` [PATCH v2 4/6] tools/virtiofsd: xattr name mappings: Map client xattr names Dr. David Alan Gilbert (git)
2020-08-27 15:36 ` [PATCH v2 5/6] tools/virtiofsd: xattr name mappings: Map server " Dr. David Alan Gilbert (git)
2020-10-06 16:03   ` Christophe de Dinechin
2020-10-14 16:04     ` Dr. David Alan Gilbert
2020-10-06 16:17   ` Christophe de Dinechin
2020-08-27 15:36 ` [PATCH v2 6/6] tools/virtiofsd: xattr name mapping examples Dr. David Alan Gilbert (git)
2020-09-09 11:35   ` Ján Tomko
2020-09-10 18:42     ` Dr. David Alan Gilbert

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=20200910183846.GO2814@work-vm \
    --to=dgilbert@redhat.com \
    --cc=jtomko@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=vgoyal@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).