r = fopen_temporary_label("/etc/passwd", passwd_path, &passwd, &passwd_tmp);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to open temporary copy of %s: %m", passwd_path);
original = fopen(passwd_path, "re");
if (original) {
r = copy_rights(fileno(original), fileno(passwd));
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to copy permissions from %s to %s: %m",
+ passwd_path, passwd_tmp);
while ((r = fgetpwent_sane(original, &pw)) > 0) {
i = ordered_hashmap_get(users, pw->pw_name);
r = putpwent_sane(pw, passwd);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to add existing user \"%s\" to temporary passwd file: %m",
+ pw->pw_name);
}
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to read %s: %m", passwd_path);
} else {
if (errno != ENOENT)
- return -errno;
+ return log_debug_errno(errno, "Failed to open %s: %m", passwd_path);
if (fchmod(fileno(passwd), 0644) < 0)
- return -errno;
+ return log_debug_errno(errno, "Failed to fchmod %s: %m", passwd_tmp);
}
ORDERED_HASHMAP_FOREACH(i, todo_uids) {
r = putpwent_sane(&n, passwd);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to add new user \"%s\" to temporary passwd file: %m",
+ pw->pw_name);
}
/* Append the remaining NIS entries if any */
while (pw) {
r = putpwent_sane(pw, passwd);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to add existing user \"%s\" to temporary passwd file: %m",
+ pw->pw_name);
r = fgetpwent_sane(original, &pw);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to read %s: %m", passwd_path);
if (r == 0)
break;
}
r = fflush_and_check(passwd);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to flush %s: %m", passwd_tmp);
*tmpfile = TAKE_PTR(passwd);
*tmpfile_path = TAKE_PTR(passwd_tmp);
r = fopen_temporary_label("/etc/shadow", shadow_path, &shadow, &shadow_tmp);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to open temporary copy of %s: %m", shadow_path);
lstchg = (long) (now(CLOCK_REALTIME) / USEC_PER_DAY);
r = copy_rights(fileno(original), fileno(shadow));
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to copy permissions from %s to %s: %m",
+ shadow_path, shadow_tmp);
while ((r = fgetspent_sane(original, &sp)) > 0) {
-
i = ordered_hashmap_get(users, sp->sp_namp);
if (i && i->todo_user) {
/* we will update the existing entry */
r = putspent_sane(sp, shadow);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to add existing user \"%s\" to temporary shadow file: %m",
+ sp->sp_namp);
+
}
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to read %s: %m", shadow_path);
} else {
if (errno != ENOENT)
- return -errno;
+ return log_debug_errno(errno, "Failed to open %s: %m", shadow_path);
if (fchmod(fileno(shadow), 0000) < 0)
- return -errno;
+ return log_debug_errno(errno, "Failed to fchmod %s: %m", shadow_tmp);
}
ORDERED_HASHMAP_FOREACH(i, todo_uids) {
r = putspent_sane(&n, shadow);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to add new user \"%s\" to temporary shadow file: %m",
+ sp->sp_namp);
}
/* Append the remaining NIS entries if any */
while (sp) {
r = putspent_sane(sp, shadow);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to add existing user \"%s\" to temporary shadow file: %m",
+ sp->sp_namp);
r = fgetspent_sane(original, &sp);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to read %s: %m", shadow_path);
if (r == 0)
break;
}
r = fflush_sync_and_check(shadow);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to flush %s: %m", shadow_tmp);
*tmpfile = TAKE_PTR(shadow);
*tmpfile_path = TAKE_PTR(shadow_tmp);
r = fopen_temporary_label("/etc/group", group_path, &group, &group_tmp);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to open temporary copy of %s: %m", group_path);
original = fopen(group_path, "re");
if (original) {
r = copy_rights(fileno(original), fileno(group));
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to copy permissions from %s to %s: %m",
+ group_path, group_tmp);
while ((r = fgetgrent_sane(original, &gr)) > 0) {
/* Safety checks against name and GID collisions. Normally,
r = putgrent_with_members(gr, group);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to add existing group \"%s\" to temporary group file: %m",
+ gr->gr_name);
if (r > 0)
group_changed = true;
}
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to read %s: %m", group_path);
} else {
if (errno != ENOENT)
- return -errno;
+ return log_debug_errno(errno, "Failed to open %s: %m", group_path);
if (fchmod(fileno(group), 0644) < 0)
- return -errno;
+ return log_debug_errno(errno, "Failed to fchmod %s: %m", group_tmp);
}
ORDERED_HASHMAP_FOREACH(i, todo_gids) {
r = putgrent_with_members(&n, group);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to add new group \"%s\" to temporary group file: %m",
+ gr->gr_name);
group_changed = true;
}
while (gr) {
r = putgrent_sane(gr, group);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to add existing group \"%s\" to temporary group file: %m",
+ gr->gr_name);
r = fgetgrent_sane(original, &gr);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to read %s: %m", group_path);
if (r == 0)
break;
}
r = fflush_sync_and_check(group);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to flush %s: %m", group_tmp);
if (group_changed) {
*tmpfile = TAKE_PTR(group);
r = fopen_temporary_label("/etc/gshadow", gshadow_path, &gshadow, &gshadow_tmp);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to open temporary copy of %s: %m", gshadow_path);
original = fopen(gshadow_path, "re");
if (original) {
r = copy_rights(fileno(original), fileno(gshadow));
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to copy permissions from %s to %s: %m",
+ gshadow_path, gshadow_tmp);
while ((r = fgetsgent_sane(original, &sg)) > 0) {
r = putsgent_with_members(sg, gshadow);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to add existing group \"%s\" to temporary gshadow file: %m",
+ sg->sg_namp);
if (r > 0)
group_changed = true;
}
} else {
if (errno != ENOENT)
- return -errno;
+ return log_debug_errno(errno, "Failed to open %s: %m", gshadow_path);
if (fchmod(fileno(gshadow), 0000) < 0)
- return -errno;
+ return log_debug_errno(errno, "Failed to fchmod %s: %m", gshadow_tmp);
}
ORDERED_HASHMAP_FOREACH(i, todo_gids) {
r = putsgent_with_members(&n, gshadow);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to add new group \"%s\" to temporary gshadow file: %m",
+ n.sg_namp);
group_changed = true;
}
r = fflush_sync_and_check(gshadow);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to flush %s: %m", gshadow_tmp);
if (group_changed) {
*tmpfile = TAKE_PTR(gshadow);
if (group) {
r = make_backup("/etc/group", group_path);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to make backup %s: %m", group_path);
}
if (gshadow) {
r = make_backup("/etc/gshadow", gshadow_path);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to make backup %s: %m", gshadow_path);
}
if (passwd) {
r = make_backup("/etc/passwd", passwd_path);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to make backup %s: %m", passwd_path);
}
if (shadow) {
r = make_backup("/etc/shadow", shadow_path);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to make backup %s: %m", shadow_path);
}
/* And make the new files count */
if (group) {
r = rename_and_apply_smack_floor_label(group_tmp, group_path);
if (r < 0)
- return r;
-
+ return log_debug_errno(r, "Failed to rename %s to %s: %m",
+ group_tmp, group_path);
group_tmp = mfree(group_tmp);
if (!arg_root && !arg_image)
if (gshadow) {
r = rename_and_apply_smack_floor_label(gshadow_tmp, gshadow_path);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to rename %s to %s: %m",
+ gshadow_tmp, gshadow_path);
gshadow_tmp = mfree(gshadow_tmp);
}
if (passwd) {
r = rename_and_apply_smack_floor_label(passwd_tmp, passwd_path);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to rename %s to %s: %m",
+ passwd_tmp, passwd_path);
passwd_tmp = mfree(passwd_tmp);
if (shadow) {
r = rename_and_apply_smack_floor_label(shadow_tmp, shadow_path);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to rename %s to %s: %m",
+ shadow_tmp, shadow_path);
shadow_tmp = mfree(shadow_tmp);
}