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
(cherry picked from commit 4c08c8242a)
Conflicts:
src/core/execute.c
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
531201b4b6
commit
c17e9668d6
+2
-1
@@ -1600,7 +1600,8 @@ static int exec_child(ExecCommand *command,
|
||||
return -errno;
|
||||
}
|
||||
|
||||
if (chdir(context->working_directory ? context->working_directory : "/") < 0) {
|
||||
if (chdir(context->working_directory ?: "/") < 0 &&
|
||||
!context->working_directory_missing_ok) {
|
||||
*error = 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;
|
||||
|
||||
@@ -3052,6 +3052,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