From: Andreas Gruenbacher <agruen@suse.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: linux-fsdevel@vger.kernel.org, torvalds@transmeta.com
Subject: Re: [PATCH] backout the xattr override access checks flag
Date: Fri, 21 Feb 2003 17:32:39 +0100 [thread overview]
Message-ID: <200302211732.39902.agruen@suse.de> (raw)
In-Reply-To: <20030221155422.A32594@infradead.org>
On Friday 21 February 2003 16:54, Christoph Hellwig wrote:
> On Fri, Feb 21, 2003 at 11:20:25AM +0100, Andreas Gruenbacher wrote:
> > > (not that such code even exists yet).
> >
> > There is an HSM project for which this feature has been added. I think
> > they are using a loadable module.
>
> URL?
>
> > > Something even better would probably be to move out the xattr access
> > > checks to common code.
> >
> > There are two problems with that, so this doesn't seem any better to me,
> > either:
> >
> > (a) We would have to decode attribute names twice, once for checking
> > permissions, and a second time for determining how to store them.
>
> Doing it in the VFS would probably mean a rather large interface change
> so it should be decoded only once. I.e. moving your current
> ext2/ext3-specific handler abstraction to the VFS instead.
>
> > (b) Different file systems may implement different features with
> > different, file system specific limitations. The VFS layer tests would
> > have to accept all potentially useful things. The file system would have
> > to re-check.
>
> What types of EAs do we have?
>
> (1) user attributes - the only access checks needed are the normal DAC ones
> (2) system/trusted - only privilegued access
>
> I think that's doable.
User and Trusted extended attributes have permission checks per namespace
(i.e., the rules for all user.* attributes are identical, and the rules for
all trusted.* attributes are identical). System extended attribute access
rules are per attribute: ACLs, Capabilities, MAC all have different policies.
Also, different file systems have different mechanisms for storing EAs, so
that need to decode the attribute name, no matter what the VFS does.
I was thinking of at least abstracting the the permission checks from the file
systems, so the file system layers can all use the same VFS helper function.
But this is no real improvement, either:
enum xattr_which { XATTR_USER, XATTR_TRUSTED,
XATTR_POSIX_ACL, XATTR_CAP, ... };
int xattr_permission(struct inode *inode, enum xattr_which which, int mask)
{
switch(which) {
case XATTR_USER:
return permission(inode, mask);
case XATTR_TRUSTED:
return capable(CAP_WHATEVER);
case XATTR_POSIX_ACL:
if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER))
return -EPERM;
return 0;
default:
return -EOPNOTSUPP;
}
}
This pseudo code is actually broken because it needs to be called from within
the xattr inode operations where the inode lock is held, so the VFS
permission() function cannot even be called because iops->permission() might
grab the inode lock as well (and needs to on ACL aware systems).
So I agree with you that the checks could be moved to the VFS, but I don't see
how this can be done in a way that is clearly better that keeping the checks
in the FS.
Cheers,
Andreas.
next prev parent reply other threads:[~2003-02-21 16:32 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-02-21 3:20 [PATCH] backout the xattr override access checks flag Christoph Hellwig
2003-02-20 20:20 ` Andreas Dilger
2003-02-20 20:26 ` Christoph Hellwig
2003-02-21 10:20 ` Andreas Gruenbacher
2003-02-21 15:54 ` Christoph Hellwig
2003-02-21 16:32 ` Andreas Gruenbacher [this message]
-- strict thread matches above, loose matches on Subject: below --
2003-02-21 12:50 Luka Renko
2003-02-21 15:58 ` Christoph Hellwig
2003-02-23 19:28 Luka Renko
2003-02-23 19:36 ` Christoph Hellwig
2003-02-23 22:16 ` Andreas Gruenbacher
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=200302211732.39902.agruen@suse.de \
--to=agruen@suse.de \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=torvalds@transmeta.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).