diff options
author | Andriy Gapon <avg@FreeBSD.org> | 2020-06-19 20:38:43 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-19 10:38:43 -0700 |
commit | a8bd6dcf8756b4abc5bac00f54361b28809d4177 (patch) | |
tree | 466ceded9b4210372d21b027349c32ea242dc551 /cmd | |
parent | 2e6af52b2e2bbab1d1988bd52290586d3bd91623 (diff) |
zfs allow/unallow should work with numeric uid/gid
And that should work even (especially) if there is no matching user or
group name. The change is originally by Xin Lin <delphij@FreeBSD.org>.
Original-patch-by: Xin Li <delphij@FreeBSD.org>
Reviewed-by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed-by: Andy Stormont <astormont@racktopsystems.com>
Reviewed-by: Matt Ahrens <matt@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Andriy Gapon <avg@FreeBSD.org>
Closes #9792
Closes #10280
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/zfs/zfs_main.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/cmd/zfs/zfs_main.c b/cmd/zfs/zfs_main.c index 5e7ee0f5b..224ed1604 100644 --- a/cmd/zfs/zfs_main.c +++ b/cmd/zfs/zfs_main.c @@ -5238,10 +5238,17 @@ parse_fs_perm(fs_perm_t *fsperm, nvlist_t *nvl) break; } - if (nice_name != NULL) + if (nice_name != NULL) { (void) strlcpy( node->who_perm.who_ug_name, nice_name, 256); + } else { + /* User or group unknown */ + (void) snprintf( + node->who_perm.who_ug_name, + sizeof (node->who_perm.who_ug_name), + "(unknown: %d)", rid); + } } uu_avl_insert(avl, node, idx); @@ -5773,9 +5780,9 @@ construct_fsacl_list(boolean_t un, struct allow_opts *opts, nvlist_t **nvlp) if (p != NULL) rid = p->pw_uid; - else { + else if (*endch != '\0') { (void) snprintf(errbuf, 256, gettext( - "invalid user %s"), curr); + "invalid user %s\n"), curr); allow_usage(un, B_TRUE, errbuf); } } else if (opts->group) { @@ -5787,9 +5794,9 @@ construct_fsacl_list(boolean_t un, struct allow_opts *opts, nvlist_t **nvlp) if (g != NULL) rid = g->gr_gid; - else { + else if (*endch != '\0') { (void) snprintf(errbuf, 256, gettext( - "invalid group %s"), curr); + "invalid group %s\n"), curr); allow_usage(un, B_TRUE, errbuf); } } else { @@ -5815,7 +5822,7 @@ construct_fsacl_list(boolean_t un, struct allow_opts *opts, nvlist_t **nvlp) rid = g->gr_gid; } else { (void) snprintf(errbuf, 256, gettext( - "invalid user/group %s"), curr); + "invalid user/group %s\n"), curr); allow_usage(un, B_TRUE, errbuf); } } |