On Tue, Jan 13, 2015 at 11:53:42AM -0800, Frank Filz wrote: > > On Tue, Jan 13, 2015 at 12:40:29PM -0500, J. Bruce Fields wrote: > > > On Tue, Jan 13, 2015 at 06:23:26PM +0100, Andreas Gruenbacher wrote: > > > > On 01/13/2015 05:48 PM, Jeremy Allison wrote: > > > > >My understanding of Christoph's objection (although I'm sure he can > > > > >chime in himself :-) was that he wanted to see POSIX ACLs reworked > > > > >as a mapping on top of RichACLs, so that ultimately RichACLs would > > > > >be the only on-disk format of the EA. > > > > > > > > > >I think that is doable, as I think any POSIX ACL can be represented > > > > >as an underlying RichACL, just not the reverse. > > > > > > > > On of the differences is that permissions in POSIX ACLs do > > > > accumulate, while in NFSv4 and CIFS ACLs, and therefore also > > > > richacls, they do not. So the two models are really not > > > > interchangeable, however annoying that may be. > > I think Andreas got do and do not reversed (though looks like everyone read > it the right way...) > > > > > For example, with the following POSIX ACL, a non-root process in > > > > group 5001 and 5002 would not be allowed to open f with O_RDWR, only > > > > with O_RDONLY *or* O_WRONLY. > > > > > > > > # file: f > > > > # owner: root > > > > # group: root > > > > user::rw- > > > > group::rw- > > > > group:5001:r-- > > > > group:5002:-w- > > > > mask::rw- > > > > other::--- > > > > > > > > In all the other ACL models, the process would be allowed to open f > > > > with O_RDWR. > > Hasn't this been resolved in in knfsd by use of DENY ACEs in converting the > POSIX ACL to NFS v4? No, it can't work. Consider a non-root process in group 5001 and 5002. The obvious way to map the above POSIX ACL to NFSv4 is: 1) group:5001:DENY:WRITE 2) group:5001:ALLOW:READ 3) group:5002:DENY:READ 4) group:5001:ALLOW:WRITE But NFSv4/CIFS permissions are cummulative. So requesting O_WRONLY will always fail as it runs into rule number 1. So let's reorder it: 1) group:5002:DENY:READ 2) group:5001:ALLOW:WRITE 3) group:5001:DENY:WRITE 4) group:5001:ALLOW:READ Now O_RDONLY fails due to rule #1 :-(. If we put both DENY rules first, both O_RDONLY and O_WRONLY fail. If we put both ALLOW rules first, then O_RDWR is allowed, which shouldn't be. There's just no way to get to the "or" behavior from here. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html