summaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
authorAndriy Gapon <avg@FreeBSD.org>2020-06-19 20:38:43 +0300
committerGitHub <noreply@github.com>2020-06-19 10:38:43 -0700
commita8bd6dcf8756b4abc5bac00f54361b28809d4177 (patch)
tree466ceded9b4210372d21b027349c32ea242dc551 /cmd
parent2e6af52b2e2bbab1d1988bd52290586d3bd91623 (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.c19
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);
}
}