cgroup_dbg("Changing ownership of %s\n", fts_path[0]);
error = cg_chown_recursive(fts_path,
cgroup->control_uid, cgroup->control_gid);
+ if (!error) {
+ error = cg_chmod_recursive_controller(fts_path[0],
+ cgroup->control_dperm,
+ cgroup->control_dperm != NO_PERMS,
+ cgroup->control_fperm,
+ cgroup->control_fperm != NO_PERMS);
+ }
}
if (error)
}
error = chown(path, cgroup->tasks_uid,
cgroup->tasks_gid);
+ if (!error && cgroup->task_fperm != NO_PERMS)
+ error = chmod(path, cgroup->task_fperm);
+
if (error) {
last_errno = errno;
error = ECGOTHER;
goto err;
}
+
}
free(base);
base = NULL;
config_cgroup->tasks_gid = val;
}
+ if (!strcmp(perm_type, "fperm")) {
+ char *endptr;
+ val = strtol(value, &endptr, 8);
+ if (*endptr)
+ goto group_task_error;
+ config_cgroup->task_fperm = val;
+ }
+
free(perm_type);
free(value);
return 1;
config_cgroup->control_gid = val;
}
+ if (!strcmp(perm_type, "fperm")) {
+ char *endptr;
+ val = strtol(value, &endptr, 8);
+ if (*endptr)
+ goto admin_error;
+ config_cgroup->control_fperm = val;
+ }
+
+ if (!strcmp(perm_type, "dperm")) {
+ char *endptr;
+ val = strtol(value, &endptr, 8);
+ if (*endptr)
+ goto admin_error;
+ config_cgroup->control_dperm = val;
+ }
+
free(perm_type);
free(value);
return 1;