]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
cgcreate: fix the wrong uid/gid set.
authorWeng Meiling <wengmeiling.weng@huawei.com>
Fri, 27 Sep 2013 05:27:30 +0000 (07:27 +0200)
committerWeng Meiling <wengmeiling.weng@huawei.com>
Fri, 27 Sep 2013 05:27:30 +0000 (07:27 +0200)
When setting the cgconfig.conf as follow:

mount {
memory = /cgroup/memory;
}

group . {
perm {
task {
gid = w00227741;
uid = w00227741;
fperm =755;
}
admin {
gid = w00227741;
uid = w00227741;
fperm =755;
dperm = 755;
}
}
memory {
}
}

and restart the cgconfig service. Then switch to the user w00227741
and cgcreate cgroup like this:

# lscgroup
memory:/

# cgcreate -g memory:test
cgcreate: can't create cgroup test: Operation not permitted

the command report the error, but the cgroup test has created:

# lscgroup
memory:/
memory:/test

this patch fix the problem.

Signed-off-by: Weng Meiling <wengmeiling.weng@huawei.com>
Acked-by: Ivana Hutarova Varekova <varekova@redhat.com>
src/api.c

index e5e1959fed082510c9eaecab2773c8c5571e5cd1..d0eb10a4dc631a3d817cae8077354de215c0b011 100644 (file)
--- a/src/api.c
+++ b/src/api.c
@@ -119,9 +119,9 @@ static const char const *cgroup_ignored_tasks_files[] = { "tasks", NULL };
 static int cg_chown(const char *filename, uid_t owner, gid_t group)
 {
        if (owner == NO_UID_GID)
-               owner = 0;
+               owner = getuid();
        if (group == NO_UID_GID)
-               group = 0;
+               group = getgid();
        return chown(filename, owner, group);
 }
 static int cg_chown_file(FTS *fts, FTSENT *ent, uid_t owner, gid_t group)