Merge pull request #4173 from brauner/2022-07-25.lxc-usernsexec

lxc-usernsexec: allow to select which {g,u}id to switch to
This commit is contained in:
Stéphane Graber 2022-07-25 17:22:24 -04:00 committed by GitHub
commit 332667eb21
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -32,6 +32,9 @@
#include "utils.h"
__hidden extern int lxc_log_fd;
/* Assume we want to become root */
static uid_t uid = 0;
static gid_t gid = 0;
static void usage(const char *name)
{
@ -90,8 +93,7 @@ static int do_child(void *vargv)
if (!lxc_drop_groups() && errno != EPERM)
return -1;
/* Assume we want to become root */
if (!lxc_switch_uid_gid(0, 0))
if (!lxc_switch_uid_gid(uid, gid))
return -1;
ret = unshare(CLONE_NEWNS);
@ -328,7 +330,7 @@ int main(int argc, char *argv[])
}
}
while ((c = getopt(argc, argv, "m:hs")) != EOF) {
while ((c = getopt(argc, argv, "m:hsu:g:")) != EOF) {
switch (c) {
case 'm':
ret = parse_map(optarg);
@ -343,6 +345,14 @@ int main(int argc, char *argv[])
case 's':
map_self = true;
break;
case 'u':
if (lxc_safe_uint(optarg, &uid) < 0)
return -1;
break;
case 'g':
if (lxc_safe_uint(optarg, &gid) < 0)
return -1;
break;
default:
usage(argv[0]);
_exit(EXIT_FAILURE);