From 678412e2ca614bde0a78f68030d634364c0b5a9f Mon Sep 17 00:00:00 2001 From: Lukas Ertl Date: Fri, 30 Mar 2007 11:23:10 +0000 Subject: Add home directory creation mode to pw.conf(5) and be a bit more specific about the effect of the current umask on -M. --- pw/pw_user.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'pw/pw_user.c') diff --git a/pw/pw_user.c b/pw/pw_user.c index 3a46353..7f13644 100644 --- a/pw/pw_user.c +++ b/pw/pw_user.c @@ -166,8 +166,8 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args) dmode_c); dmode = getmode(set, S_IRWXU | S_IRWXG | S_IRWXO); free(set); - } else - dmode = S_IRWXU | S_IRWXG | S_IRWXO; + cnf->homemode = dmode; + } /* * If we'll need to use it or we're updating it, @@ -194,7 +194,7 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args) if (strchr(cnf->home+1, '/') == NULL) { strcpy(dbuf, "/usr"); strncat(dbuf, cnf->home, MAXPATHLEN-5); - if (mkdir(dbuf, dmode) != -1 || errno == EEXIST) { + if (mkdir(dbuf, cnf->homemode) != -1 || errno == EEXIST) { chown(dbuf, 0, 0); /* * Skip first "/" and create symlink: @@ -210,7 +210,7 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args) while ((p = strchr(++p, '/')) != NULL) { *p = '\0'; if (stat(dbuf, &st) == -1) { - if (mkdir(dbuf, dmode) == -1) + if (mkdir(dbuf, cnf->homemode) == -1) goto direrr; chown(dbuf, 0, 0); } else if (!S_ISDIR(st.st_mode)) @@ -219,7 +219,7 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args) } } if (stat(dbuf, &st) == -1) { - if (mkdir(dbuf, dmode) == -1) { + if (mkdir(dbuf, cnf->homemode) == -1) { direrr: err(EX_OSFILE, "mkdir '%s'", dbuf); } chown(dbuf, 0, 0); @@ -776,7 +776,7 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args) * existing files will *not* be overwritten. */ if (!PWALTDIR() && getarg(args, 'm') != NULL && pwd->pw_dir && *pwd->pw_dir == '/' && pwd->pw_dir[1]) { - copymkdir(pwd->pw_dir, cnf->dotdir, dmode, pwd->pw_uid, pwd->pw_gid); + copymkdir(pwd->pw_dir, cnf->dotdir, cnf->homemode, pwd->pw_uid, pwd->pw_gid); pw_log(cnf, mode, W_USER, "%s(%ld) home %s made", pwd->pw_name, (long) pwd->pw_uid, pwd->pw_dir); } -- cgit v1.2.3-56-ge451