diff --git a/include/libacl_nfs4.h b/include/libacl_nfs4.h index d3786c3..654061c 100644 --- a/include/libacl_nfs4.h +++ b/include/libacl_nfs4.h @@ -54,6 +54,9 @@ #define FLAG_SUCCESSFUL_ACCESS 'S' #define FLAG_FAILED_ACCESS 'F' #define FLAG_GROUP 'g' +#define FLAG_OWNER_AT 'O' +#define FLAG_GROUP_AT 'G' +#define FLAG_EVERYONE_AT 'E' #define PERM_READ_DATA 'r' #define PERM_WRITE_DATA 'w' diff --git a/include/nfs4.h b/include/nfs4.h index da6eefb..c6d5b62 100644 --- a/include/nfs4.h +++ b/include/nfs4.h @@ -62,6 +62,9 @@ #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_OWNER 0x00000080 +#define NFS4_ACE_GROUP 0x00000100 +#define NFS4_ACE_EVERYONE 0x00000200 #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 ab8401a..a7a3036 100644 --- a/libnfs4acl/nfs4_ace_from_string.c +++ b/libnfs4acl/nfs4_ace_from_string.c @@ -209,6 +209,15 @@ struct nfs4_ace * nfs4_ace_from_string(char *ace_buf, int is_dir) case FLAG_GROUP: flags |= NFS4_ACE_IDENTIFIER_GROUP; break; + case FLAG_OWNER_AT: + flags |= NFS4_ACE_OWNER; + break; + case FLAG_GROUP_AT: + flags |= NFS4_ACE_GROUP; + break; + case FLAG_EVERYONE_AT: + flags |= NFS4_ACE_EVERYONE; + 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 1d28ed4..339a838 100644 --- a/libnfs4acl/nfs4_get_ace_flags.c +++ b/libnfs4acl/nfs4_get_ace_flags.c @@ -53,6 +53,12 @@ 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_OWNER) + *buf++ = FLAG_OWNER_AT; + if (flags & NFS4_ACE_GROUP) + *buf++ = FLAG_GROUP_AT; + if (flags & NFS4_ACE_EVERYONE) + *buf++ = FLAG_EVERYONE_AT; *buf = '\0'; return bp; diff --git a/libnfs4acl/nfs4_insert_string_aces.c b/libnfs4acl/nfs4_insert_string_aces.c index f93c3e9..5a482d5 100644 --- a/libnfs4acl/nfs4_insert_string_aces.c +++ b/libnfs4acl/nfs4_insert_string_aces.c @@ -48,8 +48,6 @@ int nfs4_insert_string_aces(struct nfs4_acl *acl, const char *acl_spec, unsigned while ((ssp = strsep(&sp, ",\t\n\r")) != NULL) { if (!strlen(ssp)) continue; - if (*ssp == '#') - continue; if ((ace = nfs4_ace_from_string(ssp, acl->is_directory)) == NULL) goto out_failed; diff --git a/libnfs4acl/nfs4_print_ace_verbose.c b/libnfs4acl/nfs4_print_ace_verbose.c index 96a6573..de9b424 100644 --- a/libnfs4acl/nfs4_print_ace_verbose.c +++ b/libnfs4acl/nfs4_print_ace_verbose.c @@ -131,6 +131,12 @@ int nfs4_print_ace_verbose(struct nfs4_ace * ace, u32 is_dir) printf("\t\tNFS4_ACE_FAILED_ACCESS_ACE_FLAG\n"); if (flag & NFS4_ACE_IDENTIFIER_GROUP) printf("\t\tNFS4_ACE_IDENTIFIER_GROUP\n"); + if (flag & NFS4_ACE_OWNER) + printf("\t\tNFS4_ACE_OWNER\n"); + if (flag & NFS4_ACE_GROUP) + printf("\t\tNFS4_ACE_GROUP\n"); + if (flag & NFS4_ACE_EVERYONE) + printf("\t\tNFS4_ACE_EVERYONE\n"); mask = ace->access_mask; diff --git a/man/man1/nfs4_getfacl.1 b/man/man1/nfs4_getfacl.1 index 7cf7cbf..83067c9 100644 --- a/man/man1/nfs4_getfacl.1 +++ b/man/man1/nfs4_getfacl.1 @@ -28,12 +28,6 @@ flag is specified, .B nfs4_getfacl will list the NFSv4 ACLs of all files and directories recursively. -If the -.BR -c / --omit-header -flag is specified, -.B nfs4_getfacl -will not display the comment header (Do not print filename). - The output format for an NFSv4 file ACL, e.g., is: .RS .nf diff --git a/nfs4_getfacl/nfs4_getfacl.c b/nfs4_getfacl/nfs4_getfacl.c index 4df2b04..5a9c911 100644 --- a/nfs4_getfacl/nfs4_getfacl.c +++ b/nfs4_getfacl/nfs4_getfacl.c @@ -46,7 +46,6 @@ static void usage(int); static void more_help(); static char *execname; static void print_acl_from_path(); -static int ignore_comment = 0; static int recursive(const char *fpath, const struct stat *sb, int tflag, struct FTW *ftwbuf) { @@ -58,7 +57,6 @@ static struct option long_options[] = { {"more-help", 0, 0, 'H' }, {"help", 0, 0, 'h' }, {"recursive", 0, 0, 'R' }, - {"omit-header", 0, 0, 'c'}, { NULL, 0, 0, 0, }, }; @@ -75,7 +73,7 @@ int main(int argc, char **argv) goto out; } - while ((opt = getopt_long(argc, argv, "HR?hc", long_options, NULL)) != -1) { + while ((opt = getopt_long(argc, argv, "HR?h", long_options, NULL)) != -1) { switch(opt) { case 'H': more_help(); @@ -85,9 +83,7 @@ int main(int argc, char **argv) case 'R': do_recursive = 1; break; - case 'c': - ignore_comment = 1; - break; + default: usage(1); res = 0; @@ -119,10 +115,8 @@ static void print_acl_from_path(const char *fpath) struct nfs4_acl *acl; acl = nfs4_acl_for_path(fpath); if (acl != NULL) { - if (ignore_comment == 0) - printf("# file: %s\n", fpath); + printf("\n# file: %s\n", fpath); nfs4_print_acl(stdout, acl); - printf("\n"); nfs4_free_acl(acl); } } @@ -131,7 +125,7 @@ static void usage(int label) { if (label) fprintf(stderr, "%s %s -- get NFSv4 file or directory access control lists.\n", execname, VERSION); - fprintf(stderr, "Usage: %s [-R] file ...\n -H, --more-help\tdisplay ACL format information\n -?, -h, --help\tdisplay this help text\n -R --recursive\trecurse into subdirectories\n -c, --omit-header\tDo not display the comment header (Do not print filename)\n", execname); + fprintf(stderr, "Usage: %s [-R] file ...\n -H, --more-help\tdisplay ACL format information\n -?, -h, --help\tdisplay this help text\n -R --recursive\trecurse into subdirectories\n", execname); } static void more_help()