From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Allison Subject: Re: [Lsf-pc] [LSF/MM ATTEND] Richacls Date: Tue, 13 Jan 2015 12:26:42 -0800 Message-ID: <20150113202642.GC29564@samba2> References: <1626890778.1513173.1421087867777.JavaMail.zimbra@redhat.com> <1137663039.1544780.1421096804147.JavaMail.zimbra@redhat.com> <20150112223016.GB1940@fieldses.org> <20150113101435.GA28924@quack.suse.cz> <54B534C3.3090608@redhat.com> <20150113164802.GA5830@samba2> <54B5548E.5030808@redhat.com> <20150113174029.GA4156@fieldses.org> <20150113180458.GF5830@samba2> <017d01d02f6a$a2e9e220$e8bda660$@mindspring.com> Reply-To: Jeremy Allison Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8BIT Cc: 'Jeremy Allison' , "'J. Bruce Fields'" , 'Andreas Gruenbacher' , 'Jan Kara' , linux-fsdevel@vger.kernel.org, lsf-pc@lists.linux-foundation.org To: Frank Filz Return-path: Received: from fn.samba.org ([216.83.154.106]:37383 "EHLO mail.samba.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750976AbbAMU0o convert rfc822-to-8bit (ORCPT ); Tue, 13 Jan 2015 15:26:44 -0500 Content-Disposition: inline In-Reply-To: <017d01d02f6a$a2e9e220$e8bda660$@mindspring.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: 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.