From: "J. Bruce Fields" <bfields@fieldses.org>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: Bruce Fields <bfields@redhat.com>,
Casey Schaufler <casey@schaufler-ca.com>,
Christian Brauner <christian.brauner@ubuntu.com>,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
viro@zeniv.linux.org.uk, virtio-fs@redhat.com, dwalsh@redhat.com,
dgilbert@redhat.com, casey.schaufler@intel.com,
linux-security-module@vger.kernel.org, selinux@vger.kernel.org,
tytso@mit.edu, miklos@szeredi.hu, gscrivan@redhat.com,
jack@suse.cz, Christoph Hellwig <hch@infradead.org>
Subject: Re: [PATCH v2 1/1] xattr: Allow user.* xattr on symlink and special files
Date: Mon, 12 Jul 2021 15:31:39 -0400 [thread overview]
Message-ID: <20210712193139.GA22997@fieldses.org> (raw)
In-Reply-To: <20210712174759.GA502004@redhat.com>
On Mon, Jul 12, 2021 at 01:47:59PM -0400, Vivek Goyal wrote:
> On Mon, Jul 12, 2021 at 11:41:06AM -0400, J. Bruce Fields wrote:
> > Looks like 0xd is what the server returns to access on a device node
> > with mode bits rw- for the caller.
> >
> > Commit c11d7fd1b317 "nfsd: take xattr bits into account for permission
> > checks" added the ACCESS_X* bits for regular files and directories but
> > not others.
> >
> > But you don't want to determine permission from the mode bits anyway,
> > you want it to depend on the owner,
>
> Thinking more about this part. Current implementation of my patch is
> effectively doing both the checks. It checks that you are owner or
> have CAP_FOWNER in xattr_permission() and then goes on to call
> inode_permission(). And that means file mode bits will also play a
> role. If caller does not have write permission on the file, it will
> be denied setxattr().
>
> If I don't call inode_permission(), and just return 0 right away for
> file owner (for symlinks and special files), then just being owner
> is enough to write user.* xattr. And then even security modules will
> not get a chance to block that operation. IOW, if you are owner of
> a symlink or special file, you can write as many user.* xattr as you
> like and except quota does not look like anything else can block
> it. I am wondering if this approach is ok?
Yeah, I'd expect security modules to get a say, and I wouldn't expect
mode bits on device nodes to be useful for deciding whether it makes
sense for xattrs to be readable or writeable.
But, I don't really know.
Do we have any other use cases besides this case of storing security
labels in user xattrs?
--b.
WARNING: multiple messages have this Message-ID (diff)
From: "J. Bruce Fields" <bfields@fieldses.org>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: gscrivan@redhat.com, Bruce Fields <bfields@redhat.com>,
miklos@szeredi.hu, selinux@vger.kernel.org, jack@suse.cz,
linux-kernel@vger.kernel.org, virtio-fs@redhat.com,
linux-fsdevel@vger.kernel.org,
linux-security-module@vger.kernel.org, viro@zeniv.linux.org.uk,
Christoph Hellwig <hch@infradead.org>,
Casey Schaufler <casey@schaufler-ca.com>,
tytso@mit.edu, Christian Brauner <christian.brauner@ubuntu.com>,
casey.schaufler@intel.com
Subject: Re: [Virtio-fs] [PATCH v2 1/1] xattr: Allow user.* xattr on symlink and special files
Date: Mon, 12 Jul 2021 15:31:39 -0400 [thread overview]
Message-ID: <20210712193139.GA22997@fieldses.org> (raw)
In-Reply-To: <20210712174759.GA502004@redhat.com>
On Mon, Jul 12, 2021 at 01:47:59PM -0400, Vivek Goyal wrote:
> On Mon, Jul 12, 2021 at 11:41:06AM -0400, J. Bruce Fields wrote:
> > Looks like 0xd is what the server returns to access on a device node
> > with mode bits rw- for the caller.
> >
> > Commit c11d7fd1b317 "nfsd: take xattr bits into account for permission
> > checks" added the ACCESS_X* bits for regular files and directories but
> > not others.
> >
> > But you don't want to determine permission from the mode bits anyway,
> > you want it to depend on the owner,
>
> Thinking more about this part. Current implementation of my patch is
> effectively doing both the checks. It checks that you are owner or
> have CAP_FOWNER in xattr_permission() and then goes on to call
> inode_permission(). And that means file mode bits will also play a
> role. If caller does not have write permission on the file, it will
> be denied setxattr().
>
> If I don't call inode_permission(), and just return 0 right away for
> file owner (for symlinks and special files), then just being owner
> is enough to write user.* xattr. And then even security modules will
> not get a chance to block that operation. IOW, if you are owner of
> a symlink or special file, you can write as many user.* xattr as you
> like and except quota does not look like anything else can block
> it. I am wondering if this approach is ok?
Yeah, I'd expect security modules to get a say, and I wouldn't expect
mode bits on device nodes to be useful for deciding whether it makes
sense for xattrs to be readable or writeable.
But, I don't really know.
Do we have any other use cases besides this case of storing security
labels in user xattrs?
--b.
next prev parent reply other threads:[~2021-07-12 19:31 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-08 17:57 [RFC PATCH v2 0/1] Relax restrictions on user.* xattr Vivek Goyal
2021-07-08 17:57 ` [Virtio-fs] " Vivek Goyal
2021-07-08 17:57 ` [PATCH v2 1/1] xattr: Allow user.* xattr on symlink and special files Vivek Goyal
2021-07-08 17:57 ` [Virtio-fs] " Vivek Goyal
2021-07-09 9:19 ` Christian Brauner
2021-07-09 9:19 ` [Virtio-fs] " Christian Brauner
2021-07-09 15:27 ` Vivek Goyal
2021-07-09 15:27 ` [Virtio-fs] " Vivek Goyal
2021-07-09 15:34 ` Casey Schaufler
2021-07-09 15:34 ` [Virtio-fs] " Casey Schaufler
2021-07-09 17:59 ` Vivek Goyal
2021-07-09 17:59 ` [Virtio-fs] " Vivek Goyal
2021-07-09 20:10 ` Bruce Fields
2021-07-09 20:10 ` [Virtio-fs] " Bruce Fields
2021-07-12 14:02 ` Vivek Goyal
2021-07-12 14:02 ` [Virtio-fs] " Vivek Goyal
2021-07-12 15:41 ` J. Bruce Fields
2021-07-12 15:41 ` [Virtio-fs] " J. Bruce Fields
2021-07-12 17:47 ` Vivek Goyal
2021-07-12 17:47 ` [Virtio-fs] " Vivek Goyal
2021-07-12 19:31 ` J. Bruce Fields [this message]
2021-07-12 19:31 ` J. Bruce Fields
2021-07-12 21:22 ` Vivek Goyal
2021-07-12 21:22 ` [Virtio-fs] " Vivek Goyal
2021-07-13 14:17 ` Casey Schaufler
2021-07-13 14:17 ` [Virtio-fs] " Casey Schaufler
2021-08-30 18:45 ` Vivek Goyal
2021-08-30 18:45 ` [Virtio-fs] " Vivek Goyal
2021-07-09 20:36 ` Theodore Ts'o
2021-07-09 20:36 ` [Virtio-fs] " Theodore Ts'o
2021-07-12 17:50 ` Vivek Goyal
2021-07-12 17:50 ` [Virtio-fs] " Vivek Goyal
2021-07-12 12:49 ` Greg Kurz
2021-07-12 12:49 ` Greg Kurz
2021-07-13 14:28 ` Casey Schaufler
2021-07-13 14:28 ` Casey Schaufler
2021-07-09 16:00 ` [RFC PATCH v2 0/1] Relax restrictions on user.* xattr Daniel Walsh
2021-07-09 16:00 ` [Virtio-fs] " Daniel Walsh
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=20210712193139.GA22997@fieldses.org \
--to=bfields@fieldses.org \
--cc=bfields@redhat.com \
--cc=casey.schaufler@intel.com \
--cc=casey@schaufler-ca.com \
--cc=christian.brauner@ubuntu.com \
--cc=dgilbert@redhat.com \
--cc=dwalsh@redhat.com \
--cc=gscrivan@redhat.com \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=selinux@vger.kernel.org \
--cc=tytso@mit.edu \
--cc=vgoyal@redhat.com \
--cc=viro@zeniv.linux.org.uk \
--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.