Commit ed3b37b2 by Stéphane Graber

Revert "chmod container dir to 0770"

This commit broke the testsuite for unprivileged containers as the container directory is now 0750 with the owner being the container root and the group being the user's group, meaning that the parent user can only enter the directory, not create entries in there. This reverts commit c86da6a3.
parent 196ab66b
...@@ -738,27 +738,6 @@ static bool lxcapi_stop(struct lxc_container *c) ...@@ -738,27 +738,6 @@ static bool lxcapi_stop(struct lxc_container *c)
return ret == 0; return ret == 0;
} }
static int do_create_container_dir(const char *path, struct lxc_conf *conf)
{
int ret = -1;
char *p = alloca(strlen(path)+1);
ret = mkdir(path, 0770);
if (ret) {
if (errno == EEXIST)
ret = 0;
else {
SYSERROR("failed to create container path %s", path);
return -1;
}
}
strcpy(p, path);
if (!lxc_list_empty(&conf->id_map) && chown_mapped_root(p, conf) != 0) {
ERROR("Failed to chown container dir");
ret = -1;
}
return ret;
}
/* /*
* create the standard expected container dir * create the standard expected container dir
*/ */
...@@ -776,7 +755,13 @@ static bool create_container_dir(struct lxc_container *c) ...@@ -776,7 +755,13 @@ static bool create_container_dir(struct lxc_container *c)
free(s); free(s);
return false; return false;
} }
ret = do_create_container_dir(s, c->lxc_conf); ret = mkdir(s, 0755);
if (ret) {
if (errno == EEXIST)
ret = 0;
else
SYSERROR("failed to create container path for %s", c->name);
}
free(s); free(s);
return ret == 0; return ret == 0;
} }
...@@ -2633,15 +2618,17 @@ sudo lxc-clone -o o1 -n n1 -s -L|-fssize fssize -v|--vgname vgname \ ...@@ -2633,15 +2618,17 @@ sudo lxc-clone -o o1 -n n1 -s -L|-fssize fssize -v|--vgname vgname \
only rootfs gets converted (copied/snapshotted) on clone. only rootfs gets converted (copied/snapshotted) on clone.
*/ */
static int create_file_dirname(char *path, struct lxc_conf *conf) static int create_file_dirname(char *path)
{ {
char *p = strrchr(path, '/'); char *p = strrchr(path, '/');
int ret = -1; int ret;
if (!p) if (!p)
return -1; return -1;
*p = '\0'; *p = '\0';
ret = do_create_container_dir(path, conf); ret = mkdir(path, 0755);
if (ret && errno != EEXIST)
SYSERROR("creating container path %s", path);
*p = '/'; *p = '/';
return ret; return ret;
} }
...@@ -2685,7 +2672,7 @@ static struct lxc_container *lxcapi_clone(struct lxc_container *c, const char *n ...@@ -2685,7 +2672,7 @@ static struct lxc_container *lxcapi_clone(struct lxc_container *c, const char *n
goto out; goto out;
} }
ret = create_file_dirname(newpath, c->lxc_conf); ret = create_file_dirname(newpath);
if (ret < 0 && errno != EEXIST) { if (ret < 0 && errno != EEXIST) {
ERROR("Error creating container dir for %s", newpath); ERROR("Error creating container dir for %s", newpath);
goto out; goto out;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment