From: Ivana Hutarova Varekova Date: Wed, 10 Nov 2010 15:08:20 +0000 (+0100) Subject: This patch removes the permission change from control_group_create function X-Git-Tag: v0.37~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa3d180bb80672e757c1852ba85b3bf929f74a6e;p=thirdparty%2Flibcgroup.git This patch removes the permission change from control_group_create function It should be done only if the caller needs it not by default. EXAMPLE: before the change: # ./tools/cgcreate -g devices:/test1 # ll /cgroup/cpu3/test1 total 0 -rwxrwxr-x. 1 root root 0 2010-11-02 08:05 cgroup.procs -rwxrwxr-x. 1 root root 0 2010-11-02 08:05 devices.allow -rwxrwxr-x. 1 root root 0 2010-11-02 08:05 devices.deny -rwxrwxr-x. 1 root root 0 2010-11-02 08:05 devices.list -rwxrwxr-x. 1 root root 0 2010-11-02 08:05 notify_on_release -rwxrwxr-x. 1 root root 0 2010-11-02 08:05 tasks # ll /cgroup/cpu3/ | grep test1 drwxrwxr-x. 2 root root 0 2010-11-02 08:05 test1 after the change: # ./tools/cgcreate -g devices:/test2 # ll /cgroup/cpu3/test2 total 0 -r--r--r--. 1 root root 0 2010-11-02 08:04 cgroup.procs --w-------. 1 root root 0 2010-11-02 08:04 devices.allow --w-------. 1 root root 0 2010-11-02 08:04 devices.deny -r--r--r--. 1 root root 0 2010-11-02 08:04 devices.list -rw-r--r--. 1 root root 0 2010-11-02 08:04 notify_on_release -rw-r--r--. 1 root root 0 2010-11-02 08:04 tasks # ll /cgroup/cpu3/ | grep test2 drwxr-xr-x. 2 root root 0 2010-11-02 08:04 test2 Signed-off-by: Ivana Hutarova Varekova Signed-off-by: Jan Safranek --- diff --git a/src/api.c b/src/api.c index d8f67663..6e79db00 100644 --- a/src/api.c +++ b/src/api.c @@ -124,7 +124,7 @@ static int cg_chown_file(FTS *fts, FTSENT *ent, uid_t owner, gid_t group) { int ret = 0; const char *filename = fts->fts_path; - cgroup_dbg("seeing file %s\n", filename); + cgroup_dbg("chown: seeing file %s\n", filename); switch (ent->fts_info) { case FTS_ERR: errno = ent->fts_errno; @@ -135,22 +135,11 @@ static int cg_chown_file(FTS *fts, FTSENT *ent, uid_t owner, gid_t group) case FTS_NS: case FTS_DNR: case FTS_DP: - ret = chown(filename, owner, group); - if (ret) - goto fail_chown; - ret = chmod(filename, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | - S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH); - break; case FTS_F: case FTS_DEFAULT: ret = chown(filename, owner, group); - if (ret) - goto fail_chown; - ret = chmod(filename, S_IRUSR | S_IWUSR | S_IRGRP | - S_IWGRP | S_IROTH); break; } -fail_chown: if (ret < 0) { last_errno = errno; ret = ECGOTHER; @@ -166,7 +155,7 @@ static int cg_chown_recursive(char **path, uid_t owner, gid_t group) int ret = 0; FTS *fts; - cgroup_dbg("path is %s\n", *path); + cgroup_dbg("chown: path is %s\n", *path); fts = fts_open(path, FTS_PHYSICAL | FTS_NOCHDIR | FTS_NOSTAT, NULL); while (1) {