All of lore.kernel.org
 help / color / mirror / Atom feed
From: NeilBrown <neilb@suse.com>
To: "J. Bruce Fields" <bfields@fieldses.org>
Cc: linux-nfs@vger.kernel.org
Subject: [PATCH - nfsv4-acl-tools] nfs4_ace_from_string: ignore inheritance ACEs on non-directories.
Date: Wed, 24 Feb 2016 14:54:18 +1100	[thread overview]
Message-ID: <8760xen4ph.fsf@notabene.neil.brown.name> (raw)

[-- Attachment #1: Type: text/plain, Size: 1915 bytes --]


If you try to use
     nfs4_setfacl -R -a A:d:........   directory

to recursively set an inheritance ACE on all directories in a tree, it
will fail on the first non-directory as setting an inheritance ACE
there is not permitted (and as it aborts on the first sign of an error).

So use the is_dir flag to avoid doing that, just as is done with the
DELETE_CHILD permission.

Signed-off-by: NeilBrown <neilb@suse.com>
---

Hi Bruce,
 are you still maintaining nfsv4-acl-tools?  Last commit was over
 a year ago!! I guess that means it is nearly perfect :-)
 
 A customer came across this problem and it seems simple to fix,
 but if I'm missing something important, please let me know.

NeilBrown


 libnfs4acl/nfs4_ace_from_string.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/libnfs4acl/nfs4_ace_from_string.c b/libnfs4acl/nfs4_ace_from_string.c
index 510ffee35d32..a7a30360d860 100644
--- a/libnfs4acl/nfs4_ace_from_string.c
+++ b/libnfs4acl/nfs4_ace_from_string.c
@@ -185,16 +185,20 @@ struct nfs4_ace * nfs4_ace_from_string(char *ace_buf, int is_dir)
 	for (buflen = strlen(field); buflen > 0; buflen--) {
 		switch (*field) {
 			case FLAG_FILE_INHERIT:
-				flags |= NFS4_ACE_FILE_INHERIT_ACE;
+				if (is_dir)
+					flags |= NFS4_ACE_FILE_INHERIT_ACE;
 				break;
 			case FLAG_DIR_INHERIT:
-				flags |= NFS4_ACE_DIRECTORY_INHERIT_ACE;
+				if (is_dir)
+					flags |= NFS4_ACE_DIRECTORY_INHERIT_ACE;
 				break;
 			case FLAG_NO_PROPAGATE_INHERIT:
-				flags |= NFS4_ACE_NO_PROPAGATE_INHERIT_ACE;
+				if (is_dir)
+					flags |= NFS4_ACE_NO_PROPAGATE_INHERIT_ACE;
 				break;
 			case FLAG_INHERIT_ONLY:
-				flags |= NFS4_ACE_INHERIT_ONLY_ACE;
+				if (is_dir)
+					flags |= NFS4_ACE_INHERIT_ONLY_ACE;
 				break;
 			case FLAG_SUCCESSFUL_ACCESS:
 				flags |= NFS4_ACE_SUCCESSFUL_ACCESS_ACE_FLAG;
-- 
2.7.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

             reply	other threads:[~2016-02-24  3:54 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-24  3:54 NeilBrown [this message]
2016-03-14 21:06 ` [PATCH - nfsv4-acl-tools] nfs4_ace_from_string: ignore inheritance ACEs on non-directories J. Bruce Fields
2016-03-15 22:32   ` NeilBrown

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=8760xen4ph.fsf@notabene.neil.brown.name \
    --to=neilb@suse.com \
    --cc=bfields@fieldses.org \
    --cc=linux-nfs@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.