Commit 43647298 by Serge Hallyn

cgfsng: try to chown tasks and cgroup.procs

parent 41c33dbe
...@@ -1028,6 +1028,9 @@ struct chown_data { ...@@ -1028,6 +1028,9 @@ struct chown_data {
* chgrp the container cgroups to container group. We leave * chgrp the container cgroups to container group. We leave
* the container owner as cgroup owner. So we must make the * the container owner as cgroup owner. So we must make the
* directories 775 so that the container can create sub-cgroups. * directories 775 so that the container can create sub-cgroups.
*
* Also chown the tasks and cgroup.procs files. Those may not
* exist depending on kernel version.
*/ */
static int chown_cgroup_wrapper(void *data) static int chown_cgroup_wrapper(void *data)
{ {
...@@ -1046,19 +1049,27 @@ static int chown_cgroup_wrapper(void *data) ...@@ -1046,19 +1049,27 @@ static int chown_cgroup_wrapper(void *data)
destuid = get_ns_uid(arg->origuid); destuid = get_ns_uid(arg->origuid);
for (i = 0; d->hierarchies[i]; i++) { for (i = 0; d->hierarchies[i]; i++) {
char *fullpath = must_make_path(d->hierarchies[i]->fullcgpath, NULL); char *fullpath, *path = d->hierarchies[i]->fullcgpath;
if (chown(fullpath, destuid, 0) < 0) {
SYSERROR("Error chowning %s", fullpath); if (chown(path, destuid, 0) < 0) {
free(fullpath); SYSERROR("Error chowning %s to %d: %m", path, (int) destuid);
return -1; return -1;
} }
if (chmod(fullpath, 0775) < 0) { if (chmod(path, 0775) < 0) {
SYSERROR("Error chmoding %s\n", fullpath); SYSERROR("Error chmoding %s: %m", path);
free(fullpath);
return -1; return -1;
} }
/* Failures to chown these are inconvenient but not detrimental */
fullpath = must_make_path(path, "tasks", NULL);
if (chown(fullpath, destuid, 0) < 0 && errno != ENOENT)
WARN("Failed chowning %s to %d: %m", fullpath, (int) destuid);
free(fullpath);
fullpath = must_make_path(path, "cgroup.procs", NULL);
if (chown(fullpath, destuid, 0) < 0 && errno != ENOENT)
WARN("Failed chowning %s to %d: %m", fullpath, (int) destuid);
free(fullpath); free(fullpath);
} }
......
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