From: Trond Myklebust <[email protected]>
The following patch set matches the kernel patches to allow access to
the NFSv4.1 'dacl' and 'sacl' attributes. The current patches are very
basic, adding support for encoding/decoding the new attributes only when
the user specifies the '--dacl' or '--sacl' flags on the command line.
Trond Myklebust (6):
libnfs4acl: Add helpers to set the dacl and sacl
libnfs4acl: Add support for the NFS4.1 ACE_INHERITED_ACE flag
The NFSv41 DACL and SACL prepend an extra field to the acl
nfs4_getacl: Add support for the --dacl and --sacl options
nfs4_setacl: Add support for the --dacl and --sacl options
Edit manpages to document the new --dacl, --sacl and inheritance
features
include/libacl_nfs4.h | 18 +++++++
include/nfs4.h | 6 +++
libnfs4acl/Makefile | 2 +
libnfs4acl/acl_nfs4_copy_acl.c | 2 +
libnfs4acl/acl_nfs4_xattr_load.c | 14 +++++-
libnfs4acl/acl_nfs4_xattr_pack.c | 22 ++++++--
libnfs4acl/nfs4_ace_from_string.c | 3 ++
libnfs4acl/nfs4_get_ace_flags.c | 2 +
libnfs4acl/nfs4_getacl.c | 84 +++++++++++++++++++++++++++++++
libnfs4acl/nfs4_new_acl.c | 1 +
libnfs4acl/nfs4_setacl.c | 49 ++++++++++++++++++
man/man1/nfs4_getfacl.1 | 14 ++++++
man/man1/nfs4_setfacl.1 | 8 +++
man/man5/nfs4_acl.5 | 10 ++++
nfs4_getfacl/nfs4_getfacl.c | 73 ++++++++++++++++++++++++---
nfs4_setfacl/nfs4_setfacl.c | 67 ++++++++++++++++++++++--
16 files changed, 359 insertions(+), 16 deletions(-)
create mode 100644 libnfs4acl/nfs4_getacl.c
create mode 100644 libnfs4acl/nfs4_setacl.c
--
2.36.1
From: Trond Myklebust <[email protected]>
Add helper functions to set the NFSv4.1 dacl and sacl attributes.
Signed-off-by: Trond Myklebust <[email protected]>
---
include/libacl_nfs4.h | 9 +++++
libnfs4acl/Makefile | 2 +
libnfs4acl/nfs4_getacl.c | 83 ++++++++++++++++++++++++++++++++++++++++
libnfs4acl/nfs4_setacl.c | 49 ++++++++++++++++++++++++
4 files changed, 143 insertions(+)
create mode 100644 libnfs4acl/nfs4_getacl.c
create mode 100644 libnfs4acl/nfs4_setacl.c
diff --git a/include/libacl_nfs4.h b/include/libacl_nfs4.h
index d3786c3fabdc..76bbe90af54d 100644
--- a/include/libacl_nfs4.h
+++ b/include/libacl_nfs4.h
@@ -123,6 +123,8 @@
/* NFS4 acl xattr name */
#define ACL_NFS4_XATTR "system.nfs4_acl"
+#define DACL_NFS4_XATTR "system.nfs4_dacl"
+#define SACL_NFS4_XATTR "system.nfs4_sacl"
/* Macro for finding empty tailqs */
#define TAILQ_IS_EMPTY(head) (head.tqh_first == NULL)
@@ -152,6 +154,13 @@ TAILQ_HEAD(ace_container_list_head, ace_container);
/**** Public functions ****/
+extern struct nfs4_acl * nfs4_getacl(const char *path);
+extern struct nfs4_acl * nfs4_getdacl(const char *path);
+extern struct nfs4_acl * nfs4_getsacl(const char *path);
+extern int nfs4_setacl(const char *path, struct nfs4_acl *acl);
+extern int nfs4_setdacl(const char *path, struct nfs4_acl *acl);
+extern int nfs4_setsacl(const char *path, struct nfs4_acl *acl);
+
/** Manipulation functions **/
extern int acl_nfs4_set_who(struct nfs4_ace*, int, char*);
extern struct nfs4_acl * acl_nfs4_copy_acl(struct nfs4_acl *);
diff --git a/libnfs4acl/Makefile b/libnfs4acl/Makefile
index a598d4ee141f..556b59535e26 100644
--- a/libnfs4acl/Makefile
+++ b/libnfs4acl/Makefile
@@ -92,6 +92,8 @@ LIBACL_NFS4_CFILES = \
nfs4_get_ace_access.c \
nfs4_get_ace_flags.c \
nfs4_get_ace_type.c \
+ nfs4_getacl.c \
+ nfs4_setacl.c \
nfs4_insert_file_aces.c \
nfs4_insert_string_aces.c \
nfs4_free_acl.c \
diff --git a/libnfs4acl/nfs4_getacl.c b/libnfs4acl/nfs4_getacl.c
new file mode 100644
index 000000000000..753ba9167459
--- /dev/null
+++ b/libnfs4acl/nfs4_getacl.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2022, Trond Myklebust <[email protected]>
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU LESSER GENERAL PUBLIC LICENSE for more details.
+ */
+
+#include <sys/types.h>
+#include <config.h>
+#ifdef HAVE_ATTR_XATTR_H
+# include <attr/xattr.h>
+#else
+# ifdef HAVE_SYS_XATTR_H
+# include <sys/xattr.h>
+# endif
+#endif
+#include <sys/stat.h>
+#include "libacl_nfs4.h"
+
+/* returns a newly-allocated struct nfs4_acl or NULL on error. */
+static struct nfs4_acl *nfs4_getacl_byname(const char *path,
+ const char *xattr_name)
+{
+ struct nfs4_acl *acl;
+ struct stat st;
+ void *buf;
+ ssize_t ret;
+ u32 iflags = NFS4_ACL_ISFILE;
+
+ if (path == NULL || *path == 0) {
+ errno = EFAULT;
+ return NULL;
+ }
+
+ /* find necessary buffer size */
+ ret = getxattr(path, xattr_name, NULL, 0);
+ if (ret == -1)
+ goto err;
+
+ buf = malloc(ret);
+ if (!buf)
+ goto err;
+
+ /* reconstruct the ACL */
+ ret = getxattr(path, xattr_name, buf, ret);
+ if (ret == -1)
+ goto err_free;
+
+ ret = stat(path, &st);
+ if (ret == -1)
+ goto err_free;
+
+ if (S_ISDIR(st.st_mode))
+ iflags = NFS4_ACL_ISDIR;
+
+ acl = acl_nfs4_xattr_load(buf, ret, iflags);
+
+ free(buf);
+ return acl;
+err_free:
+ free(buf);
+err:
+ return NULL;
+}
+
+struct nfs4_acl *nfs4_getacl(const char *path)
+{
+ return nfs4_getacl_byname(path, ACL_NFS4_XATTR);
+}
+struct nfs4_acl *nfs4_getdacl(const char *path)
+{
+ return nfs4_getacl_byname(path, DACL_NFS4_XATTR);
+}
+struct nfs4_acl *nfs4_getsacl(const char *path)
+{
+ return nfs4_getacl_byname(path, SACL_NFS4_XATTR);
+}
diff --git a/libnfs4acl/nfs4_setacl.c b/libnfs4acl/nfs4_setacl.c
new file mode 100644
index 000000000000..298365ec67c5
--- /dev/null
+++ b/libnfs4acl/nfs4_setacl.c
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2022, Trond Myklebust <[email protected]>
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU LESSER GENERAL PUBLIC LICENSE for more details.
+ */
+
+#include <sys/types.h>
+#include <config.h>
+#ifdef HAVE_ATTR_XATTR_H
+# include <attr/xattr.h>
+#else
+# ifdef HAVE_SYS_XATTR_H
+# include <sys/xattr.h>
+# endif
+#endif
+#include "libacl_nfs4.h"
+
+static int nfs4_setacl_byname(const char *path, const char *xattr_name,
+ struct nfs4_acl *acl)
+{
+ char *xdrbuf = NULL;
+ int ret;
+
+ ret = acl_nfs4_xattr_pack(acl, &xdrbuf);
+ if (ret != -1)
+ ret = setxattr(path, xattr_name, xdrbuf, ret, XATTR_REPLACE);
+ free(xdrbuf);
+ return ret;
+}
+
+int nfs4_setacl(const char *path, struct nfs4_acl *acl)
+{
+ return nfs4_setacl_byname(path, ACL_NFS4_XATTR, acl);
+}
+int nfs4_setdacl(const char *path, struct nfs4_acl *acl)
+{
+ return nfs4_setacl_byname(path, DACL_NFS4_XATTR, acl);
+}
+int nfs4_setsacl(const char *path, struct nfs4_acl *acl)
+{
+ return nfs4_setacl_byname(path, SACL_NFS4_XATTR, acl);
+}
--
2.36.1
From: Trond Myklebust <[email protected]>
Use the letter 'I' to represent an inherited ACE.
Signed-off-by: Trond Myklebust <[email protected]>
---
include/libacl_nfs4.h | 1 +
include/nfs4.h | 1 +
libnfs4acl/nfs4_ace_from_string.c | 3 +++
libnfs4acl/nfs4_get_ace_flags.c | 2 ++
nfs4_getfacl/nfs4_getfacl.c | 1 +
5 files changed, 8 insertions(+)
diff --git a/include/libacl_nfs4.h b/include/libacl_nfs4.h
index 76bbe90af54d..d54d82f94f97 100644
--- a/include/libacl_nfs4.h
+++ b/include/libacl_nfs4.h
@@ -54,6 +54,7 @@
#define FLAG_SUCCESSFUL_ACCESS 'S'
#define FLAG_FAILED_ACCESS 'F'
#define FLAG_GROUP 'g'
+#define FLAG_INHERITED 'I'
#define PERM_READ_DATA 'r'
#define PERM_WRITE_DATA 'w'
diff --git a/include/nfs4.h b/include/nfs4.h
index da6eefb7fbc6..20bfa6b99634 100644
--- a/include/nfs4.h
+++ b/include/nfs4.h
@@ -62,6 +62,7 @@
#define NFS4_ACE_SUCCESSFUL_ACCESS_ACE_FLAG 0x00000010
#define NFS4_ACE_FAILED_ACCESS_ACE_FLAG 0x00000020
#define NFS4_ACE_IDENTIFIER_GROUP 0x00000040
+#define NFS4_ACE_INHERITED_ACE 0x00000080
#define NFS4_ACE_READ_DATA 0x00000001
#define NFS4_ACE_LIST_DIRECTORY 0x00000001
diff --git a/libnfs4acl/nfs4_ace_from_string.c b/libnfs4acl/nfs4_ace_from_string.c
index ab8401ae0629..7f1315434435 100644
--- a/libnfs4acl/nfs4_ace_from_string.c
+++ b/libnfs4acl/nfs4_ace_from_string.c
@@ -209,6 +209,9 @@ struct nfs4_ace * nfs4_ace_from_string(char *ace_buf, int is_dir)
case FLAG_GROUP:
flags |= NFS4_ACE_IDENTIFIER_GROUP;
break;
+ case FLAG_INHERITED:
+ flags |= NFS4_ACE_INHERITED_ACE;
+ break;
default:
fprintf(stderr,"Bad Ace Flag:%c\n", *field);
goto out_free;
diff --git a/libnfs4acl/nfs4_get_ace_flags.c b/libnfs4acl/nfs4_get_ace_flags.c
index 1d28ed4b5196..1f27d17ad4cd 100644
--- a/libnfs4acl/nfs4_get_ace_flags.c
+++ b/libnfs4acl/nfs4_get_ace_flags.c
@@ -53,6 +53,8 @@ char* nfs4_get_ace_flags(struct nfs4_ace *ace, char *buf)
*buf++ = FLAG_FAILED_ACCESS;;
if (flags & NFS4_ACE_IDENTIFIER_GROUP)
*buf++ = FLAG_GROUP;
+ if (flags & NFS4_ACE_INHERITED_ACE)
+ *buf++ = FLAG_INHERITED;
*buf = '\0';
return bp;
diff --git a/nfs4_getfacl/nfs4_getfacl.c b/nfs4_getfacl/nfs4_getfacl.c
index e068095b0d6b..1222dd907c9e 100644
--- a/nfs4_getfacl/nfs4_getfacl.c
+++ b/nfs4_getfacl/nfs4_getfacl.c
@@ -170,6 +170,7 @@ static void more_help()
" 'S' successful-access\n"
" 'F' failed-access\n"
" 'g' group (denotes that <principal> is a group)\n"
+ " 'I' inherited\n"
"\n"
" * <principal> - named user or group, or one of: \"OWNER@\", \"GROUP@\", \"EVERYONE@\"\n"
"\n"
--
2.36.1
On Sat, 2022-05-14 at 21:59 -0400, J.Bruce Fields wrote:
> On Sat, May 14, 2022 at 10:44:30AM -0400, [email protected] wrote:
> > From: Trond Myklebust <[email protected]>
> >
> > The following patch set matches the kernel patches to allow access
> > to
> > the NFSv4.1 'dacl' and 'sacl' attributes. The current patches are
> > very
> > basic, adding support for encoding/decoding the new attributes only
> > when
> > the user specifies the '--dacl' or '--sacl' flags on the command
> > line.
>
> Seems like a reasonable thing to do.
>
> I'd rather not be responsible for nfs4-acl-tools any longer, though.
>
> --b.
I suspected that might be the case, but since you haven't made any
announcements about anybody else taking over, I figured I'd start by
sending these to you.
So who should take over the nfs4-acl-tools maintainer role? Is that
something Red Hat might be interested in doing, or should I volunteer
to do it while we wait for somebody to get so fed up that they decide
to step in?
--
Trond Myklebust
Linux NFS client maintainer, Hammerspace
[email protected]
On Sat, May 14, 2022 at 10:44:30AM -0400, [email protected] wrote:
> From: Trond Myklebust <[email protected]>
>
> The following patch set matches the kernel patches to allow access to
> the NFSv4.1 'dacl' and 'sacl' attributes. The current patches are very
> basic, adding support for encoding/decoding the new attributes only when
> the user specifies the '--dacl' or '--sacl' flags on the command line.
Seems like a reasonable thing to do.
I'd rather not be responsible for nfs4-acl-tools any longer, though.
--b.
>
> Trond Myklebust (6):
> libnfs4acl: Add helpers to set the dacl and sacl
> libnfs4acl: Add support for the NFS4.1 ACE_INHERITED_ACE flag
> The NFSv41 DACL and SACL prepend an extra field to the acl
> nfs4_getacl: Add support for the --dacl and --sacl options
> nfs4_setacl: Add support for the --dacl and --sacl options
> Edit manpages to document the new --dacl, --sacl and inheritance
> features
>
> include/libacl_nfs4.h | 18 +++++++
> include/nfs4.h | 6 +++
> libnfs4acl/Makefile | 2 +
> libnfs4acl/acl_nfs4_copy_acl.c | 2 +
> libnfs4acl/acl_nfs4_xattr_load.c | 14 +++++-
> libnfs4acl/acl_nfs4_xattr_pack.c | 22 ++++++--
> libnfs4acl/nfs4_ace_from_string.c | 3 ++
> libnfs4acl/nfs4_get_ace_flags.c | 2 +
> libnfs4acl/nfs4_getacl.c | 84 +++++++++++++++++++++++++++++++
> libnfs4acl/nfs4_new_acl.c | 1 +
> libnfs4acl/nfs4_setacl.c | 49 ++++++++++++++++++
> man/man1/nfs4_getfacl.1 | 14 ++++++
> man/man1/nfs4_setfacl.1 | 8 +++
> man/man5/nfs4_acl.5 | 10 ++++
> nfs4_getfacl/nfs4_getfacl.c | 73 ++++++++++++++++++++++++---
> nfs4_setfacl/nfs4_setfacl.c | 67 ++++++++++++++++++++++--
> 16 files changed, 359 insertions(+), 16 deletions(-)
> create mode 100644 libnfs4acl/nfs4_getacl.c
> create mode 100644 libnfs4acl/nfs4_setacl.c
>
> --
> 2.36.1
On Thu, May 19, 2022 at 09:47:41AM -0400, Steve Dickson wrote:
>
>
> On 5/14/22 11:23 PM, Trond Myklebust wrote:
> >On Sat, 2022-05-14 at 21:59 -0400, J.Bruce Fields wrote:
> >>On Sat, May 14, 2022 at 10:44:30AM -0400, [email protected] wrote:
> >>>From: Trond Myklebust <[email protected]>
> >>>
> >>>The following patch set matches the kernel patches to allow access
> >>>to
> >>>the NFSv4.1 'dacl' and 'sacl' attributes. The current patches are
> >>>very
> >>>basic, adding support for encoding/decoding the new attributes only
> >>>when
> >>>the user specifies the '--dacl' or '--sacl' flags on the command
> >>>line.
> >>
> >>Seems like a reasonable thing to do.
> >>
> >>I'd rather not be responsible for nfs4-acl-tools any longer, though.
> >>
> >>--b.
> >
> >I suspected that might be the case, but since you haven't made any
> >announcements about anybody else taking over, I figured I'd start by
> >sending these to you.
> >
> >So who should take over the nfs4-acl-tools maintainer role? Is that
> >something Red Hat might be interested in doing, or should I volunteer
> >to do it while we wait for somebody to get so fed up that they decide
> >to step in?
> >
> Yeah... it probably something we should take over....
>
> I'll add these to my todo list... Where does the upstream repo
> live today?
The Fedora rpm package points to my repo on linux-nfs. So you can just
clone that and update the spec files to point at your repo.
--b.
On 5/19/22 9:53 AM, [email protected] wrote:
> On Thu, May 19, 2022 at 09:47:41AM -0400, Steve Dickson wrote:
>>
>>
>> On 5/14/22 11:23 PM, Trond Myklebust wrote:
>>> On Sat, 2022-05-14 at 21:59 -0400, J.Bruce Fields wrote:
>>>> On Sat, May 14, 2022 at 10:44:30AM -0400, [email protected] wrote:
>>>>> From: Trond Myklebust <[email protected]>
>>>>>
>>>>> The following patch set matches the kernel patches to allow access
>>>>> to
>>>>> the NFSv4.1 'dacl' and 'sacl' attributes. The current patches are
>>>>> very
>>>>> basic, adding support for encoding/decoding the new attributes only
>>>>> when
>>>>> the user specifies the '--dacl' or '--sacl' flags on the command
>>>>> line.
>>>>
>>>> Seems like a reasonable thing to do.
>>>>
>>>> I'd rather not be responsible for nfs4-acl-tools any longer, though.
>>>>
>>>> --b.
>>>
>>> I suspected that might be the case, but since you haven't made any
>>> announcements about anybody else taking over, I figured I'd start by
>>> sending these to you.
>>>
>>> So who should take over the nfs4-acl-tools maintainer role? Is that
>>> something Red Hat might be interested in doing, or should I volunteer
>>> to do it while we wait for somebody to get so fed up that they decide
>>> to step in?
>>>
>> Yeah... it probably something we should take over....
>>
>> I'll add these to my todo list... Where does the upstream repo
>> live today?
There is now a new nfs4-acl-tools repo [1] that I will start
using for this patch set. You might want to disable
the old repo.
Also the links on the main page of linux-nfs.org [2]
will need to point to [1]. I guess I don't have an
account on that box, so I can not make that change.
steved.
[1] git://git.linux-nfs.org/~steved/nfs4-acl-tools.git
[2] http://linux-nfs.org/wiki/index.php/Main_Page
On Thu, May 19, 2022 at 02:52:25PM -0400, Steve Dickson wrote:
> Also the links on the main page of linux-nfs.org [2]
> will need to point to [1]. I guess I don't have an
> account on that box, so I can not make that change.
https://wiki.linux-nfs.org/wiki/index.php/Special:RequestAccount
--b.
On 5/14/22 11:23 PM, Trond Myklebust wrote:
> On Sat, 2022-05-14 at 21:59 -0400, J.Bruce Fields wrote:
>> On Sat, May 14, 2022 at 10:44:30AM -0400, [email protected] wrote:
>>> From: Trond Myklebust <[email protected]>
>>>
>>> The following patch set matches the kernel patches to allow access
>>> to
>>> the NFSv4.1 'dacl' and 'sacl' attributes. The current patches are
>>> very
>>> basic, adding support for encoding/decoding the new attributes only
>>> when
>>> the user specifies the '--dacl' or '--sacl' flags on the command
>>> line.
>>
>> Seems like a reasonable thing to do.
>>
>> I'd rather not be responsible for nfs4-acl-tools any longer, though.
>>
>> --b.
>
> I suspected that might be the case, but since you haven't made any
> announcements about anybody else taking over, I figured I'd start by
> sending these to you.
>
> So who should take over the nfs4-acl-tools maintainer role? Is that
> something Red Hat might be interested in doing, or should I volunteer
> to do it while we wait for somebody to get so fed up that they decide
> to step in?
>
Yeah... it probably something we should take over....
I'll add these to my todo list... Where does the upstream repo
live today?
steved.
On 5/14/22 10:44 AM, [email protected] wrote:
> From: Trond Myklebust <[email protected]>
>
> The following patch set matches the kernel patches to allow access to
> the NFSv4.1 'dacl' and 'sacl' attributes. The current patches are very
> basic, adding support for encoding/decoding the new attributes only when
> the user specifies the '--dacl' or '--sacl' flags on the command line.
>
> Trond Myklebust (6):
> libnfs4acl: Add helpers to set the dacl and sacl
> libnfs4acl: Add support for the NFS4.1 ACE_INHERITED_ACE flag
> The NFSv41 DACL and SACL prepend an extra field to the acl
> nfs4_getacl: Add support for the --dacl and --sacl options
> nfs4_setacl: Add support for the --dacl and --sacl options
> Edit manpages to document the new --dacl, --sacl and inheritance
> features
>
> include/libacl_nfs4.h | 18 +++++++
> include/nfs4.h | 6 +++
> libnfs4acl/Makefile | 2 +
> libnfs4acl/acl_nfs4_copy_acl.c | 2 +
> libnfs4acl/acl_nfs4_xattr_load.c | 14 +++++-
> libnfs4acl/acl_nfs4_xattr_pack.c | 22 ++++++--
> libnfs4acl/nfs4_ace_from_string.c | 3 ++
> libnfs4acl/nfs4_get_ace_flags.c | 2 +
> libnfs4acl/nfs4_getacl.c | 84 +++++++++++++++++++++++++++++++
> libnfs4acl/nfs4_new_acl.c | 1 +
> libnfs4acl/nfs4_setacl.c | 49 ++++++++++++++++++
> man/man1/nfs4_getfacl.1 | 14 ++++++
> man/man1/nfs4_setfacl.1 | 8 +++
> man/man5/nfs4_acl.5 | 10 ++++
> nfs4_getfacl/nfs4_getfacl.c | 73 ++++++++++++++++++++++++---
> nfs4_setfacl/nfs4_setfacl.c | 67 ++++++++++++++++++++++--
> 16 files changed, 359 insertions(+), 16 deletions(-)
> create mode 100644 libnfs4acl/nfs4_getacl.c
> create mode 100644 libnfs4acl/nfs4_setacl.c
>
My apologies this took so long....
Committed (tag: nfs4-acl-tools-0.4.1-rc)
steved.
Thanks!--b.
On Tue, Jun 21, 2022 at 09:43:44AM -0400, Steve Dickson wrote:
>
>
> On 5/14/22 10:44 AM, [email protected] wrote:
> >From: Trond Myklebust <[email protected]>
> >
> >The following patch set matches the kernel patches to allow access to
> >the NFSv4.1 'dacl' and 'sacl' attributes. The current patches are very
> >basic, adding support for encoding/decoding the new attributes only when
> >the user specifies the '--dacl' or '--sacl' flags on the command line.
> >
> >Trond Myklebust (6):
> > libnfs4acl: Add helpers to set the dacl and sacl
> > libnfs4acl: Add support for the NFS4.1 ACE_INHERITED_ACE flag
> > The NFSv41 DACL and SACL prepend an extra field to the acl
> > nfs4_getacl: Add support for the --dacl and --sacl options
> > nfs4_setacl: Add support for the --dacl and --sacl options
> > Edit manpages to document the new --dacl, --sacl and inheritance
> > features
> >
> > include/libacl_nfs4.h | 18 +++++++
> > include/nfs4.h | 6 +++
> > libnfs4acl/Makefile | 2 +
> > libnfs4acl/acl_nfs4_copy_acl.c | 2 +
> > libnfs4acl/acl_nfs4_xattr_load.c | 14 +++++-
> > libnfs4acl/acl_nfs4_xattr_pack.c | 22 ++++++--
> > libnfs4acl/nfs4_ace_from_string.c | 3 ++
> > libnfs4acl/nfs4_get_ace_flags.c | 2 +
> > libnfs4acl/nfs4_getacl.c | 84 +++++++++++++++++++++++++++++++
> > libnfs4acl/nfs4_new_acl.c | 1 +
> > libnfs4acl/nfs4_setacl.c | 49 ++++++++++++++++++
> > man/man1/nfs4_getfacl.1 | 14 ++++++
> > man/man1/nfs4_setfacl.1 | 8 +++
> > man/man5/nfs4_acl.5 | 10 ++++
> > nfs4_getfacl/nfs4_getfacl.c | 73 ++++++++++++++++++++++++---
> > nfs4_setfacl/nfs4_setfacl.c | 67 ++++++++++++++++++++++--
> > 16 files changed, 359 insertions(+), 16 deletions(-)
> > create mode 100644 libnfs4acl/nfs4_getacl.c
> > create mode 100644 libnfs4acl/nfs4_setacl.c
> >
> My apologies this took so long....
>
> Committed (tag: nfs4-acl-tools-0.4.1-rc)
>
> steved.