Thread (2 messages) flat view 2 messages, 2 authors, 2015-09-17

Re: [RFC v7 10/41] richacl: Permission check algorithm

From: Andreas Grünbacher <hidden>
Date: 2015-09-11 22:12:16
Also in: linux-cifs, linux-fsdevel, linux-nfs, lkml

2015-09-11 23:16 GMT+02:00 J. Bruce Fields [off-list ref]:
On Sat, Sep 05, 2015 at 12:27:05PM +0200, Andreas Gruenbacher wrote:
quoted
+             /*
+              * Apply the group file mask to entries other than owner@ and
+              * everyone@ or user entries matching the owner.  This ensures
+              * that we grant the same permissions as the acl computed by
+              * richacl_apply_masks().
+              *
+              * Without this restriction, the following richacl would grant
+              * rw access to processes which are both the owner and in the
+              * owning group, but not to other users in the owning group,
+              * which could not be represented without masks:
+              *
+              *  owner:rw::mask
+              *  group@:rw::allow
+              */
+             if ((acl->a_flags & RICHACL_MASKED) && richace_is_allow(ace))
+                     ace_mask &= acl->a_group_mask;
I'm having trouble understanding this.  I think the problem is that I
don't really understand the notation in your example.  Is a_group_mask
zero in that example?  I think it must be, in which case, OK I think I
get it.
Yes. I'm not sure if the example becomes easier to understand when the
empty group mask and perhaps also the other mask is included.
(Though I still have to think about it a little more to convince myself
that richacl_apply_masks() always gets the same result.)
I have tried to break the algorithm into digestible pieces. Do you see
another way to make things easier to understand?

Thanks,
Andreas
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help