diff options
author | 2007-03-30 11:23:10 +0000 | |
---|---|---|
committer | 2007-03-30 11:23:10 +0000 | |
commit | abdbf0ce5b290f2af7177279704ab6c0c83a2a2b (patch) | |
tree | 1fc2f362e082e5c3fdd4808dd1a2a168bc46f18c /pw/pw_user.c | |
parent | 6c558b459495a9f26c675637f9fbd07938502e5d (diff) | |
download | pw-darwin-abdbf0ce5b290f2af7177279704ab6c0c83a2a2b.tar.gz pw-darwin-abdbf0ce5b290f2af7177279704ab6c0c83a2a2b.tar.zst pw-darwin-abdbf0ce5b290f2af7177279704ab6c0c83a2a2b.zip |
Add home directory creation mode to pw.conf(5) and be a bit
more specific about the effect of the current umask on -M.
Diffstat (limited to 'pw/pw_user.c')
-rw-r--r-- | pw/pw_user.c | 12 |
1 files changed, 6 insertions, 6 deletions
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); } |