tmpfiles: don't relabel files in dry run mode

tmpfiles attempts to correct the label of a file during various actions
via the function fd_set_perms().  Currently, said function generally
respects the dry-run mode.  However, it attempts to fix the label of a
given file regardless of the state of said dry-run mode.

This causes problems, because a user could attempt to run tmpfiles with
elevated permissions and dry run enabled, expecting the tool to not
modify their system.  Instead, tmpfiles would falsely relabel a file,
modifying their system.

This commit explicitly checks for when dry-run is enabled and skips the
file relabelling process.  Furthermore, I added logging for both cases.
I found helpful during debugging.  That said, I don't think it's
necessary to use the level LOG_INFO on the dry-run path, as it would
always produce an info log.
This commit is contained in:
Jan Fooken
2025-08-26 04:07:24 +09:00
committed by Yu Watanabe
parent 9ce6d08196
commit 7bb8e9e82f
+6
View File
@@ -1060,6 +1060,12 @@ static int fd_set_perms(
}
shortcut:
if (arg_dry_run) {
log_debug("Would relabel \"%s\"", path);
return 0;
}
log_debug("Relabelling \"%s\"", path);
return label_fix_full(fd, /* inode_path= */ NULL, /* label_path= */ path, 0);
}