mount: Use /tmp/nsjail.[tmp|root].<orig_euid>
authorRobert Swiecki <robert@swiecki.net>
Wed, 21 Jun 2017 16:29:02 +0000 (18:29 +0200)
committerRobert Swiecki <robert@swiecki.net>
Wed, 21 Jun 2017 16:29:02 +0000 (18:29 +0200)
cmdline.c
common.h
mount.c

index 5584662c79a974766fc2179606e24b955e9f83d2..458edf3b0220154a6c10d7c3369a5d7ef24b47ac 100644 (file)
--- a/cmdline.c
+++ b/cmdline.c
@@ -353,6 +353,7 @@ bool cmdlineParse(int argc, char *argv[], struct nsjconf_t * nsjconf)
       .iface_vs_gw = "0.0.0.0",
       .kafel_file = NULL,
       .kafel_string = NULL,
+      .orig_euid = geteuid(),
   };
   /*  *INDENT-ON* */
 
index 62d78ebcc853a60b284fbf807f105776bd30b03f..f16c12d997840a80df001ec51e65caa177b6d725 100644 (file)
--- a/common.h
+++ b/common.h
@@ -164,6 +164,7 @@ struct nsjconf_t {
        size_t cgroup_pids_max;
        FILE *kafel_file;
        char *kafel_string;
+       uid_t orig_euid;
         TAILQ_HEAD(udmaplist, idmap_t) uids;
         TAILQ_HEAD(gdmaplist, idmap_t) gids;
         TAILQ_HEAD(envlist, charptr_t) envs;
diff --git a/mount.c b/mount.c
index ba5595103adec60474e89ddbe9849ce1987eac8b..296b50bea48f3c167cb3f2704e4b5889381c5be2 100644 (file)
--- a/mount.c
+++ b/mount.c
@@ -254,7 +254,8 @@ static bool mountInitNsInternal(struct nsjconf_t *nsjconf)
                return false;
        }
 
-       const char *const destdir = "/tmp/nsjail.root";
+       char destdir[PATH_MAX];
+       snprintf(destdir, sizeof(destdir), "/tmp/nsjail.root.%d", (int)nsjconf->orig_euid);
        if (mkdir(destdir, 0755) == -1 && errno != EEXIST) {
                PLOG_E("Couldn't create '%s' directory. Maybe remove it?", destdir);
                return false;
@@ -263,7 +264,9 @@ static bool mountInitNsInternal(struct nsjconf_t *nsjconf)
                PLOG_E("mount('%s', 'tmpfs')", destdir);
                return false;
        }
-       const char *const tmpdir = "/tmp/nsjail.tmp";
+
+       char tmpdir[PATH_MAX];
+       snprintf(tmpdir, sizeof(tmpdir), "/tmp/nsjail.tmp.%d", (int)nsjconf->orig_euid);
        if (mkdir(tmpdir, 0755) == -1 && errno != EEXIST) {
                PLOG_E("Couldn't create '%s' directory. Maybe remove it?", tmpdir);
                return false;