diff options
author | Thomas Bächler <thomas@archlinux.org> | 2012-10-06 01:11:52 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-10-16 02:17:46 +0200 |
commit | 6bae23a0388dd077fee99e83e161d297c3e2b768 (patch) | |
tree | b88dc058c0111f52ba762523a173e43ecba4b3f9 /src/core/main.c | |
parent | 080ffcb4a124bd77054a3909bbd5f14d62f79b62 (diff) |
core: Refuse to run a user instance when the system hasn't been booted with systemd.
Running as a user instance won't work at all if systemd isn't running as system
manager, so refuse to start in that case.
Diffstat (limited to 'src/core/main.c')
-rw-r--r-- | src/core/main.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/core/main.c b/src/core/main.c index f9aba46b58..e094efeb3c 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -62,6 +62,7 @@ #include "hwclock.h" #include "selinux-setup.h" #include "ima-setup.h" +#include "sd-daemon.h" static enum { ACTION_RUN, @@ -1423,11 +1424,19 @@ int main(int argc, char *argv[]) { if (parse_argv(argc, argv) < 0) goto finish; - if (arg_action == ACTION_TEST && geteuid() == 0) { + if (arg_action == ACTION_TEST && + geteuid() == 0) { log_error("Don't run test mode as root."); goto finish; } + if (arg_running_as == SYSTEMD_USER && + arg_action == ACTION_RUN && + sd_booted() <= 0) { + log_error("Trying to run as user instance, but the system has not been booted with systemd."); + goto finish; + } + if (arg_running_as == SYSTEMD_SYSTEM && arg_action == ACTION_RUN && running_in_chroot() > 0) { |