homework: also apply uid shifting when changing passwords/resizing/updating home areas

This adds uidmap shifting also when resizing/updating/changing
passwords. Prviously I thought we didn't have to, because the user is
not going to access the uidmap if we only quickly activate the home
area. But this thinking is wrong, because the three operations will
result in an update ~/.identity fie to be written, and we should do that
with uidmap applied, so that its ownership maps down to nobody below as
intended.

Fixes: #21441
This commit is contained in:
Lennart Poettering
2021-11-24 18:41:54 +01:00
parent 6f2c813667
commit a8be098403
2 changed files with 12 additions and 0 deletions
+4
View File
@@ -3202,6 +3202,10 @@ int home_resize_luks(
return r;
}
r = home_maybe_shift_uid(h, flags, setup);
if (r < 0)
return r;
log_info("offset = %" PRIu64 ", size = %" PRIu64 ", image = %" PRIu64, setup->partition_offset, setup->partition_size, old_image_size);
if ((UINT64_MAX - setup->partition_offset) < setup->partition_size ||
+8
View File
@@ -1609,6 +1609,10 @@ static int home_update(UserRecord *h, UserRecord **ret) {
if (r < 0)
return r;
r = home_maybe_shift_uid(h, flags, &setup);
if (r < 0)
return r;
r = home_store_header_identity_luks(new_home, &setup, header_home);
if (r < 0)
return r;
@@ -1701,6 +1705,10 @@ static int home_passwd(UserRecord *h, UserRecord **ret_home) {
if (r < 0)
return r;
r = home_maybe_shift_uid(h, flags, &setup);
if (r < 0)
return r;
switch (user_record_storage(h)) {
case USER_LUKS: