lkml.org 
[lkml]   [2009]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [Patch] allow file truncations when both suid and write permissions set
Eric Sandeen wrote:
> Amerigo Wang wrote:
>> When suid is set and the non-owner user has write permission,
>> any writing into this file should be allowed and suid should be
>> removed after that.
>>
>> However, current kernel only allows writing without truncations,
>> when we do truncations on that file, we get EPERM. This is a bug.

...

> So I think the main problem here is simply that we didn't set
> ATTR_FORCE, right...
>
> Seems a little odd to |= with ret, -then- check if it's non-0. Maybe:
>
> /* Remove suid/sgid on truncate too */
> - newattrs.ia_valid |= should_remove_suid(dentry);
> + ret = should_remove_suid(dentry);
> + if (ret)
> + newattrs.ia_valid |= (ret | ATTR_FORCE);
>

On second thought, and after talking w/ eparis, I think this probably
needs a security_inode_killpriv() too... it seems like it might be best
to change file_remove_suid(*file) to dentry_remove_suid(*dentry) and
just call that from do_truncate()?

-Eric


\
 
 \ /
  Last update: 2009-07-01 21:29    [W:0.062 / U:0.976 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site