From: Sol Boucher Date: Fri, 8 Jul 2022 16:09:13 +0000 (-0400) Subject: unshare: Fix "you (user xxxx) don't exist" error when uid differs from primary gid X-Git-Tag: v2.38.1~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f27183e9a377b1f3f78290791bf324be2969090;p=thirdparty%2Futil-linux.git unshare: Fix "you (user xxxx) don't exist" error when uid differs from primary gid This problem affected the --map-auto and --map-groups=auto command-line switches. The root cause is that /etc/subgid is indexed by user or uid, not by group or gid; therefore, we should be using the effective uid to find entries in this file, just as we do for /etc/subuid. Signed-off-by: Sol Boucher --- diff --git a/sys-utils/unshare.c b/sys-utils/unshare.c index 95f1c1bc2a..21916adfd0 100644 --- a/sys-utils/unshare.c +++ b/sys-utils/unshare.c @@ -859,14 +859,14 @@ int main(int argc, char *argv[]) case OPT_MAPGROUPS: unshare_flags |= CLONE_NEWUSER; if (!strcmp(optarg, "auto")) - groupmap = read_subid_range(_PATH_SUBGID, real_egid); + groupmap = read_subid_range(_PATH_SUBGID, real_euid); else groupmap = get_map_range(optarg); break; case OPT_MAPAUTO: unshare_flags |= CLONE_NEWUSER; usermap = read_subid_range(_PATH_SUBUID, real_euid); - groupmap = read_subid_range(_PATH_SUBGID, real_egid); + groupmap = read_subid_range(_PATH_SUBGID, real_euid); break; case OPT_SETGROUPS: setgrpcmd = setgroups_str2id(optarg);