e2f70f3
diff --git a/src/api.c b/src/api.c
e623b7c
index f8c5acd..3f7d831 100644
e2f70f3
--- a/src/api.c
e2f70f3
+++ b/src/api.c
e623b7c
@@ -52,6 +52,10 @@ const struct cgroup_library_version library_version = {
e623b7c
 	.release = CGROUP_VER_RELEASE,
e623b7c
 };
Peter Schiffer a9d6912
 
Peter Schiffer a9d6912
+int cg_chmod_file(FTS *fts, FTSENT *ent, mode_t dir_mode,
Peter Schiffer a9d6912
+	int dirm_change, mode_t file_mode, int filem_change,
Peter Schiffer a9d6912
+	int owner_is_umask);
Peter Schiffer a9d6912
+
Peter Schiffer a9d6912
 /*
e623b7c
  * The errno which happend the last time (have to be thread specific)
Peter Schiffer a9d6912
  */
e623b7c
@@ -184,6 +188,8 @@ static int cg_chown_recursive(char **path, uid_t owner, gid_t group)
Peter Schiffer a9d6912
 {
Peter Schiffer a9d6912
 	int ret = 0;
Peter Schiffer a9d6912
 	FTS *fts;
Peter Schiffer a9d6912
+	/* mode 664 */
Peter Schiffer a9d6912
+	mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH;
Peter Schiffer a9d6912
 
Peter Schiffer a9d6912
 	cgroup_dbg("chown: path is %s\n", *path);
e623b7c
 	fts = fts_open(path, FTS_PHYSICAL | FTS_NOCHDIR | FTS_NOSTAT, NULL);
e623b7c
@@ -201,6 +207,7 @@ static int cg_chown_recursive(char **path, uid_t owner, gid_t group)
e623b7c
 			cgroup_warn("fts_read failed\n");
Peter Schiffer a9d6912
 			break;
Peter Schiffer a9d6912
 		}
Peter Schiffer a9d6912
+		cg_chmod_file(fts, ent, mode, 0, mode, 1, 1);
Peter Schiffer a9d6912
 		ret = cg_chown_file(fts, ent, owner, group);
Peter Schiffer a9d6912
 	}
Peter Schiffer a9d6912
 	fts_close(fts);