From 05e64ea45dedc7206f2054d9821c71d7dc94ef1b Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 15 May 2024 06:19:42 +0900 Subject: [PATCH] home: fix ownership of files copied from skelton directory Fixes #32808. --- src/home/homework.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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; -- 2.47.3