diff --git a/src/systemctl/systemctl-util.c b/src/systemctl/systemctl-util.c index 71f14b8abf..20bae11fa2 100644 --- a/src/systemctl/systemctl-util.c +++ b/src/systemctl/systemctl-util.c @@ -29,6 +29,7 @@ #include "reboot-util.h" #include "runtime-scope.h" #include "set.h" +#include "stat-util.h" #include "string-util.h" #include "strv.h" #include "systemctl.h" @@ -589,6 +590,13 @@ int unit_find_paths( return log_error_errno(r, "Failed to find fragment for '%s': %m", unit_name); if (_path) { + /* Check if unit is masked (symlinked to /dev/null or empty) */ + r = null_or_empty_path(_path); + if (r < 0) + return log_error_errno(r, "Failed to check if '%s' is masked: %m", unit_name); + if (r > 0) + return -ERFKILL; /* special case: no logging */ + path = strdup(_path); if (!path) return log_oom();