From: Yu Watanabe Date: Tue, 14 May 2024 21:19:42 +0000 (+0900) Subject: home: fix ownership of files copied from skelton directory X-Git-Tag: v256-rc2~1^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=05e64ea45dedc7206f2054d9821c71d7dc94ef1b;p=thirdparty%2Fsystemd.git home: fix ownership of files copied from skelton directory Fixes #32808. --- diff --git a/src/home/homework.c b/src/home/homework.c index 7865772db27..af8bcd72a4c 100644 --- a/src/home/homework.c +++ b/src/home/homework.c @@ -1059,12 +1059,13 @@ static int home_deactivate(UserRecord *h, bool force) { return 0; } -static int copy_skel(int root_fd, const char *skel) { +static int copy_skel(UserRecord *h, int root_fd, const char *skel) { int r; + assert(h); assert(root_fd >= 0); - r = copy_tree_at(AT_FDCWD, skel, root_fd, ".", UID_INVALID, GID_INVALID, COPY_MERGE|COPY_REPLACE, NULL, NULL); + r = copy_tree_at(AT_FDCWD, skel, root_fd, ".", h->uid, h->gid, COPY_MERGE|COPY_REPLACE, NULL, NULL); if (r == -ENOENT) { log_info("Skeleton directory %s missing, ignoring.", skel); return 0; @@ -1092,7 +1093,7 @@ int home_populate(UserRecord *h, int dir_fd) { assert(h); assert(dir_fd >= 0); - r = copy_skel(dir_fd, user_record_skeleton_directory(h)); + r = copy_skel(h, dir_fd, user_record_skeleton_directory(h)); if (r < 0) return r;