linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andreas Gruenbacher <agruenba@redhat.com>
To: Steve French <smfrench@gmail.com>
Cc: linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	samba-technical <samba-technical@lists.samba.org>,
	Anne Marie Merritt <annemarie.merritt@primarydata.com>,
	Weston Andros Adamson <dros@primarydata.com>
Subject: Re: Richacl and stored but ignored permissions
Date: Tue, 8 Nov 2016 21:47:35 +0100	[thread overview]
Message-ID: <CAHc6FU4sPxAsi6Csy-60b6NZ-y-Wf8YOd4BvmuWsCuNA-x_ibQ@mail.gmail.com> (raw)
In-Reply-To: <CAH2r5mvtWv6D4zmcFWL5Yowiy+wQ5mGgd1mRWNCT4bBGnrQLQA@mail.gmail.com>

Hi Steve,

On Tue, Nov 8, 2016 at 7:25 PM, Steve French <smfrench@gmail.com> wrote:
> I noticed that setrichacl (on ext4/xfs with richacl patches from your
> tree) allows setting some of the five "stored but ignored" permissions
>
> S   synchronize
> W  write named attributes
> R  read named attributes
> e write retention
> E write retention hold
>
> but it brings up some questions:
> 1) why is 'S' the only one of those five that although allowed to be
> set, will not be displayed by getrichacl?  Presumably if it can be
> set, you might as well display it on getrichacl and that might have
> been the original intent since there is a space for it when you do
> "getrichacl --full" but that implies (probably correctly) that
> 'Sychronize' permission is always granted.

the synchronize (S), read_attributes (a), and read_acl (c) permissions
are "always allowed". The read_named_attrs (R), write_named_attrs (W),
write_retention (e), and write_retention_hold (E) permissions have no
meaningful mapping locally. All of these permissions are stored but
ignored.

With setrichacl, when setting simple ACLs that can be fully
represented in the file permission bits, no actual ACL is stored. For
example, the ACL owner@:rwp::allow is stored as the rw------- file
permission bits. When checking if an ACL can be fully represented as
file permission bits, the "always allowed" permissions are ignored.
The ACL owner@:rwpS::allow (note the synchronize (S) permission) is
also stored as the rw------- file permission bits, and the synchronize
permission isn't explicitly preserved. This is likely why getrichacl
didn't seem to show the synchronize permission in your tests.

> 2) should we allow 'e' and 'E' to be set (I lean toward yes, but NFS
> rejected it when I tried, although xfs/ext4 accepted it).

Did you try with the appropriate NFS protocol version? These
permissions were added relatively late.

> 3) Shouldn't we actually do something with 'W' (and maybe 'R'
> permission but presumably that can be just implied to be on since some
> attributes always need to be readable) and actually enforce use of W
> permission to allow/forbid the setting of xattrs on the file?

The meaning of the R and W permissions is so vaguely defined that I
don't think it makes sense to map them to xattrs. Windows seems to use
them for something different than NFSv4 does according to
documentation, which may not even match what implementation do.

> 4) Shouldn't we display as enabled permissions those that are implicit
> rather than leaving them out (as if they are forbidden)?  e.g. the
> 'owner' permission ('o') presumably can be displayed for root (as it
> is by default granted), also note the 'a' and 'S' permissions when
> you do "getrichacl --full" are displayed as unset even though they are
> implicitly granted.  You can fix that by setting 'a' explicitly but it
> seems wrong to implicitly grant a permission, but not display it as
> granted in getrichacl

I've tried that, and things get confusing pretty fast:

 * The resulting ACLs were rather confusing.

 * What do you do with an ACL that doesn't have an entry for owner@ or the
   actual owner? Do you add an owner@ entry just to show the implicitly
   granted write_attributes (A) and write_acl (C) permissions?

 * Since you're mentioning the root user, should root entries be added as well?

 * Permissions might have to change when the file ownership changes, for entries
   representing the actual file owner.

* Would implicitly granted permissions be added to DENY ACEs as well?
   If not, will Windows still show DENY ACEs with well-known sets of
   permissions such as Full Access correctly?

Thanks,
Andreas

  reply	other threads:[~2016-11-08 20:47 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-08 18:25 Richacl and stored but ignored permissions Steve French
2016-11-08 20:47 ` Andreas Gruenbacher [this message]
2016-11-08 20:53 ` Andreas Gruenbacher

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=CAHc6FU4sPxAsi6Csy-60b6NZ-y-Wf8YOd4BvmuWsCuNA-x_ibQ@mail.gmail.com \
    --to=agruenba@redhat.com \
    --cc=annemarie.merritt@primarydata.com \
    --cc=dros@primarydata.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=samba-technical@lists.samba.org \
    --cc=smfrench@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).