mirror of
https://github.com/clearlinux/systemd-stable.git
synced 2026-09-06 21:51:37 +00:00
core: don't fail to run services in --user instances if $HOME is missing
Otherwise we cannot even invoke systemd-exit.service anymore, thus not even exit. https://bugs.freedesktop.org/show_bug.cgi?id=83100 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=759320
This commit is contained in:
+2
-1
@@ -1617,7 +1617,8 @@ static int exec_child(
|
||||
return -errno;
|
||||
}
|
||||
|
||||
if (chdir(context->working_directory ? context->working_directory : "/") < 0) {
|
||||
if (chdir(context->working_directory ?: "/") < 0 &&
|
||||
!context->working_directory_missing_ok) {
|
||||
*exit_status = EXIT_CHDIR;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
@@ -99,6 +99,7 @@ struct ExecContext {
|
||||
|
||||
struct rlimit *rlimit[_RLIMIT_MAX];
|
||||
char *working_directory, *root_directory;
|
||||
bool working_directory_missing_ok;
|
||||
|
||||
mode_t umask;
|
||||
int oom_score_adjust;
|
||||
|
||||
@@ -3178,6 +3178,10 @@ int unit_patch_contexts(Unit *u) {
|
||||
r = get_home_dir(&ec->working_directory);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
/* Allow user services to run, even if the
|
||||
* home directory is missing */
|
||||
ec->working_directory_missing_ok = true;
|
||||
}
|
||||
|
||||
if (u->manager->running_as == SYSTEMD_USER &&
|
||||
|
||||
Reference in New Issue
Block a user