[Bug 280099] adduser not respecting home directory mode

From: <bugzilla-noreply_at_freebsd.org>
Date: Mon, 26 Aug 2024 15:34:42 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=280099

--- Comment #9 from Kyle Evans <kevans@freebsd.org> ---
pw(8) probably should have been doing this all along:

diff --git a/usr.sbin/pw/cpdir.c b/usr.sbin/pw/cpdir.c
index 504933ab88af..856ab95ee781 100644
--- a/usr.sbin/pw/cpdir.c
+++ b/usr.sbin/pw/cpdir.c
@@ -49,9 +49,13 @@ copymkdir(int rootfd, char const * dir, int skelfd, mode_t
mode, uid_t uid,
        if (*dir == '/')
                dir++;

-       if (mkdirat(rootfd, dir, mode) != 0 && errno != EEXIST) {
-               warn("mkdir(%s)", dir);
-               return;
+       if (mkdirat(rootfd, dir, mode) != 0) {
+               if (errno != EEXIST) {
+                       warn("mkdir(%s)", dir);
+                       return;
+               }
+
+               (void)fchmodat(rootfd, dir, mode, AT_SYMLINK_NOFOLLOW);
        }
        fchownat(rootfd, dir, uid, gid, AT_SYMLINK_NOFOLLOW);
        if (flags > 0)

-- 
You are receiving this mail because:
You are the assignee for the bug.