From: Jonathan Calmels Date: Mon, 16 Apr 2018 19:30:33 +0000 (-0700) Subject: pam-cgfs: ignore the system umask when creating the cgroup hierarchy X-Git-Tag: lxc-4.0.0~670^2 X-Git-Url: https://git.proxmox.com/?p=mirror_lxc.git;a=commitdiff_plain;h=c4a4578fa04d3428a1c9ac5ab43ab01f4367b1ff pam-cgfs: ignore the system umask when creating the cgroup hierarchy Fixes: #2277 Signed-off-by: Jonathan Calmels --- diff --git a/src/lxc/pam/pam_cgfs.c b/src/lxc/pam/pam_cgfs.c index 3df8daef3..5c272b0e8 100644 --- a/src/lxc/pam/pam_cgfs.c +++ b/src/lxc/pam/pam_cgfs.c @@ -223,6 +223,20 @@ static bool cgv2_prune_empty_cgroups(const char *user); static bool cgv2_remove(const char *cgroup); static bool is_cgv2(char *line); +static int do_mkdir(const char *path, mode_t mode) +{ + int saved_errno; + mode_t mask; + int r; + + mask = umask(0); + r = mkdir(path, mode); + saved_errno = errno; + umask(mask); + errno = saved_errno; + return (r); +} + /* Create directory and (if necessary) its parents. */ static bool mkdir_parent(const char *root, char *path) { @@ -252,7 +266,7 @@ static bool mkdir_parent(const char *root, char *path) if (file_exists(path)) goto next; - if (mkdir(path, 0755) < 0) { + if (do_mkdir(path, 0755) < 0) { pam_cgfs_debug("Failed to create %s: %s.\n", path, strerror(errno)); return false; } @@ -1963,7 +1977,7 @@ static bool cgv1_handle_cpuset_hierarchy(struct cgv1_hierarchy *h, cgpath = must_make_path(h->mountpoint, h->base_cgroup, cgroup, NULL); if (slash) *slash = '/'; - if (mkdir(cgpath, 0755) < 0 && errno != EEXIST) { + if (do_mkdir(cgpath, 0755) < 0 && errno != EEXIST) { pam_cgfs_debug("Failed to create '%s'", cgpath); free(cgpath); return false;