1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-31 16:21:26 +03:00

core: add more safety check

Let's make sure that if we are PID 1 we are invoked in ACTION_RUN mode,
and in arg_system mode, as well as the opposite.

Everything else is untested and probably not worth supporting hence
let's bail out early if people try anyway.
This commit is contained in:
Lennart Poettering 2017-12-15 16:38:20 +01:00
parent 263162da6c
commit febf46a46c

View File

@ -2093,6 +2093,25 @@ static int load_configuration(int argc, char **argv, const char **ret_error_mess
static int safety_checks(void) {
if (getpid_cached() == 1 &&
arg_action != ACTION_RUN) {
log_error("Unsupported execution mode while PID 1.");
return -EPERM;
}
if (getpid_cached() == 1 &&
!arg_system) {
log_error("Can't run --user mode as PID 1.");
return -EPERM;
}
if (arg_action == ACTION_RUN &&
arg_system &&
getpid_cached() != 1) {
log_error("Can't run system mode unless PID 1.");
return -EPERM;
}
if (arg_action == ACTION_TEST &&
geteuid() == 0) {
log_error("Don't run test mode as root.");