From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Dave Chinner <david@fromorbit.com>
Cc: agruen@kernel.org, bfields@fieldses.org,
akpm@linux-foundation.org, viro@zeniv.linux.org.uk,
dhowells@redhat.com, linux-fsdevel@vger.kernel.org,
linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH -V1 08/22] vfs: Add permission flags for setting file attributes
Date: Thu, 01 May 2014 20:50:46 +0530 [thread overview]
Message-ID: <87ioppbk4x.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <20140429001723.GQ15995@dastard>
Dave Chinner <david@fromorbit.com> writes:
> On Sun, Apr 27, 2014 at 09:44:39PM +0530, Aneesh Kumar K.V wrote:
>> From: Andreas Gruenbacher <agruen@kernel.org>
>>
>> Some permission models can allow processes to take ownership of a file,
>> change the file permissions, and set the file timestamps. Introduce new
>> permission mask flags and check for those permissions in
>> inode_change_ok().
>>
>> Signed-off-by: Andreas Gruenbacher <agruen@kernel.org>
>> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
>> ---
>> fs/attr.c | 68 ++++++++++++++++++++++++++++++++++++++++++++----------
>> fs/namei.c | 2 +-
>> include/linux/fs.h | 4 ++++
>> 3 files changed, 61 insertions(+), 13 deletions(-)
>>
>> diff --git a/fs/attr.c b/fs/attr.c
>> index 1d158c972442..e468d4f2dca8 100644
>> --- a/fs/attr.c
>> +++ b/fs/attr.c
>> @@ -16,6 +16,54 @@
>> #include <linux/evm.h>
>> #include <linux/ima.h>
>>
>> +static int richacl_change_ok(struct inode *inode, int mask)
>> +{
>
> acl_change_ok()
Will update.
>
>> + if (!IS_RICHACL(inode))
>> + return -EPERM;
>> +
>> + if (inode->i_op->permission)
>> + return inode->i_op->permission(inode, mask);
>> +
>> + return check_acl(inode, mask);
>> +}
>> +
>> +static bool inode_uid_change_ok(struct inode *inode, kuid_t ia_uid)
>> +{
>> + if (uid_eq(current_fsuid(), inode->i_uid) &&
>> + uid_eq(ia_uid, inode->i_uid))
>> + return true;
>> + if (uid_eq(current_fsuid(), ia_uid) &&
>> + richacl_change_ok(inode, MAY_TAKE_OWNERSHIP) == 0)
>> + return true;
>> + if (capable(CAP_CHOWN))
>> + return true;
>> + return false;
>> +}
>> +
>> +static bool inode_gid_change_ok(struct inode *inode, kgid_t ia_gid)
>> +{
>> + int in_group = in_group_p(ia_gid);
>> + if (uid_eq(current_fsuid(), inode->i_uid) &&
>> + (in_group || gid_eq(ia_gid, inode->i_gid)))
>> + return true;
>> + if (in_group && richacl_change_ok(inode, MAY_TAKE_OWNERSHIP) == 0)
>> + return true;
>> + if (capable(CAP_CHOWN))
>> + return true;
>> + return false;
>> +}
>> +
>> +static bool inode_owner_permitted_or_capable(struct inode *inode, int mask)
>> +{
>> + if (uid_eq(current_fsuid(), inode->i_uid))
>> + return true;
>> + if (richacl_change_ok(inode, mask) == 0)
>> + return true;
>> + if (inode_capable(inode, CAP_FOWNER))
>> + return true;
>> + return false;
>> +}
>
> Some comments on when and why these need to be used instead of
> inode_owner_or_capable() would be useful. I can see people getting
> this wrong in future.
>
Ok.
-aneesh
WARNING: multiple messages have this Message-ID (diff)
From: "Aneesh Kumar K.V" <aneesh.kumar-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
To: Dave Chinner <david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org>
Cc: agruen-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org,
dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH -V1 08/22] vfs: Add permission flags for setting file attributes
Date: Thu, 01 May 2014 20:50:46 +0530 [thread overview]
Message-ID: <87ioppbk4x.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <20140429001723.GQ15995@dastard>
Dave Chinner <david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org> writes:
> On Sun, Apr 27, 2014 at 09:44:39PM +0530, Aneesh Kumar K.V wrote:
>> From: Andreas Gruenbacher <agruen-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>>
>> Some permission models can allow processes to take ownership of a file,
>> change the file permissions, and set the file timestamps. Introduce new
>> permission mask flags and check for those permissions in
>> inode_change_ok().
>>
>> Signed-off-by: Andreas Gruenbacher <agruen-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
>> ---
>> fs/attr.c | 68 ++++++++++++++++++++++++++++++++++++++++++++----------
>> fs/namei.c | 2 +-
>> include/linux/fs.h | 4 ++++
>> 3 files changed, 61 insertions(+), 13 deletions(-)
>>
>> diff --git a/fs/attr.c b/fs/attr.c
>> index 1d158c972442..e468d4f2dca8 100644
>> --- a/fs/attr.c
>> +++ b/fs/attr.c
>> @@ -16,6 +16,54 @@
>> #include <linux/evm.h>
>> #include <linux/ima.h>
>>
>> +static int richacl_change_ok(struct inode *inode, int mask)
>> +{
>
> acl_change_ok()
Will update.
>
>> + if (!IS_RICHACL(inode))
>> + return -EPERM;
>> +
>> + if (inode->i_op->permission)
>> + return inode->i_op->permission(inode, mask);
>> +
>> + return check_acl(inode, mask);
>> +}
>> +
>> +static bool inode_uid_change_ok(struct inode *inode, kuid_t ia_uid)
>> +{
>> + if (uid_eq(current_fsuid(), inode->i_uid) &&
>> + uid_eq(ia_uid, inode->i_uid))
>> + return true;
>> + if (uid_eq(current_fsuid(), ia_uid) &&
>> + richacl_change_ok(inode, MAY_TAKE_OWNERSHIP) == 0)
>> + return true;
>> + if (capable(CAP_CHOWN))
>> + return true;
>> + return false;
>> +}
>> +
>> +static bool inode_gid_change_ok(struct inode *inode, kgid_t ia_gid)
>> +{
>> + int in_group = in_group_p(ia_gid);
>> + if (uid_eq(current_fsuid(), inode->i_uid) &&
>> + (in_group || gid_eq(ia_gid, inode->i_gid)))
>> + return true;
>> + if (in_group && richacl_change_ok(inode, MAY_TAKE_OWNERSHIP) == 0)
>> + return true;
>> + if (capable(CAP_CHOWN))
>> + return true;
>> + return false;
>> +}
>> +
>> +static bool inode_owner_permitted_or_capable(struct inode *inode, int mask)
>> +{
>> + if (uid_eq(current_fsuid(), inode->i_uid))
>> + return true;
>> + if (richacl_change_ok(inode, mask) == 0)
>> + return true;
>> + if (inode_capable(inode, CAP_FOWNER))
>> + return true;
>> + return false;
>> +}
>
> Some comments on when and why these need to be used instead of
> inode_owner_or_capable() would be useful. I can see people getting
> this wrong in future.
>
Ok.
-aneesh
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-05-01 15:20 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-27 16:14 [PATCH -V1 00/22] New ACL format for better NFSv4 acl interoperability Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 01/22] vfs: Add generic IS_ACL() test for acl support Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 02/22] vfs: Add IS_RICHACL() test for richacl support Aneesh Kumar K.V
2014-04-27 16:14 ` Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 03/22] vfs: Optimize out IS_RICHACL() if CONFIG_FS_RICHACL is not defined Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 04/22] vfs: check for directory early Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 05/22] vfs: Add new file and directory create permission flags Aneesh Kumar K.V
2014-04-28 11:23 ` Jeff Layton
2014-04-29 0:04 ` Dave Chinner
2014-04-29 0:04 ` Dave Chinner
2014-05-01 15:16 ` Aneesh Kumar K.V
2014-05-01 15:16 ` Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 06/22] vfs: Add delete child and delete self " Aneesh Kumar K.V
2014-04-29 0:07 ` Dave Chinner
2014-05-01 15:18 ` Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 07/22] vfs: Make the inode passed to inode_change_ok non-const Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 08/22] vfs: Add permission flags for setting file attributes Aneesh Kumar K.V
2014-04-29 0:17 ` Dave Chinner
2014-05-01 15:20 ` Aneesh Kumar K.V [this message]
2014-05-01 15:20 ` Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 09/22] vfs: Make acl_permission_check() work for richacls Aneesh Kumar K.V
2014-04-29 0:20 ` Dave Chinner
2014-05-01 15:39 ` Aneesh Kumar K.V
2014-05-01 15:39 ` Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 10/22] richacl: In-memory representation and helper functions Aneesh Kumar K.V
2014-04-29 0:24 ` Dave Chinner
2014-05-01 15:42 ` Aneesh Kumar K.V
2014-05-06 9:35 ` Kinglong Mee
2014-05-06 9:35 ` Kinglong Mee
2014-04-27 16:14 ` [PATCH -V1 11/22] richacl: Permission mapping functions Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 12/22] richacl: Compute maximum file masks from an acl Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 13/22] richacl: Update the file masks in chmod() Aneesh Kumar K.V
2014-04-27 16:14 ` Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 14/22] richacl: Permission check algorithm Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 15/22] richacl: Create-time inheritance Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 16/22] richacl: Check if an acl is equivalent to a file mode Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 17/22] richacl: Automatic Inheritance Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 18/22] richacl: xattr mapping functions Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 19/22] vfs: Cache richacl in struct inode Aneesh Kumar K.V
2014-04-27 16:14 ` Aneesh Kumar K.V
2014-04-29 0:52 ` Dave Chinner
2014-04-29 0:52 ` Dave Chinner
2014-04-29 12:16 ` Matthew Wilcox
2014-05-01 15:45 ` Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 20/22] vfs: Add richacl permission check Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 21/22] ext4: Implement rich acl for ext4 Aneesh Kumar K.V
2014-04-27 16:14 ` [PATCH -V1 22/22] ext4: Add Ext4 compat richacl feature flag Aneesh Kumar K.V
2014-04-28 21:31 ` Andreas Dilger
2014-04-28 21:31 ` Andreas Dilger
2014-05-01 15:48 ` Aneesh Kumar K.V
2014-05-01 15:48 ` Aneesh Kumar K.V
2014-05-01 17:52 ` Andreas Dilger
2014-04-27 22:20 ` [PATCH -V1 00/22] New ACL format for better NFSv4 acl interoperability Dave Chinner
2014-04-27 22:20 ` Dave Chinner
2014-04-28 5:24 ` Aneesh Kumar K.V
2014-04-28 5:24 ` Aneesh Kumar K.V
2014-04-28 23:58 ` Dave Chinner
2014-05-01 15:49 ` Aneesh Kumar K.V
2014-05-01 15:49 ` Aneesh Kumar K.V
2014-04-28 4:39 ` Christoph Hellwig
2014-04-28 5:54 ` Aneesh Kumar K.V
2014-04-28 5:54 ` Aneesh Kumar K.V
2014-04-28 9:03 ` Christoph Hellwig
2014-04-28 9:03 ` Christoph Hellwig
2014-05-06 20:15 ` J. Bruce Fields
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=87ioppbk4x.fsf@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=agruen@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=bfields@fieldses.org \
--cc=david@fromorbit.com \
--cc=dhowells@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/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.