cleanups for machined/nspawn (#41060)
This commit is contained in:
@@ -155,6 +155,9 @@ int vl_method_register(sd_varlink *link, sd_json_variant *parameters, sd_varlink
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
if (!IN_SET(machine->class, MACHINE_CONTAINER, MACHINE_VM))
|
||||
return sd_varlink_error_invalid_parameter_name(link, "class");
|
||||
|
||||
if (manager->runtime_scope != RUNTIME_SCOPE_USER) {
|
||||
r = varlink_verify_polkit_async(
|
||||
link,
|
||||
|
||||
@@ -433,7 +433,7 @@ static int method_create_or_register_machine(
|
||||
c = _MACHINE_CLASS_INVALID;
|
||||
else {
|
||||
c = machine_class_from_string(class);
|
||||
if (c < 0)
|
||||
if (c < 0 || !IN_SET(c, MACHINE_CONTAINER, MACHINE_VM))
|
||||
return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid machine class parameter");
|
||||
}
|
||||
|
||||
@@ -608,7 +608,7 @@ static int method_create_or_register_machine_ex(
|
||||
c = _MACHINE_CLASS_INVALID;
|
||||
else {
|
||||
c = machine_class_from_string(class);
|
||||
if (c < 0)
|
||||
if (c < 0 || !IN_SET(c, MACHINE_CONTAINER, MACHINE_VM))
|
||||
return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid machine class parameter");
|
||||
}
|
||||
|
||||
|
||||
@@ -1370,7 +1370,9 @@ int pivot_root_parse(char **pivot_root_new, char **pivot_root_old, const char *s
|
||||
|
||||
if (!path_is_absolute(root_new))
|
||||
return -EINVAL;
|
||||
if (root_old && !path_is_absolute(root_old))
|
||||
if (!path_is_normalized(root_new))
|
||||
return -EINVAL;
|
||||
if (root_old && (!path_is_absolute(root_old) || !path_is_normalized(root_old)))
|
||||
return -EINVAL;
|
||||
|
||||
free_and_replace(*pivot_root_new, root_new);
|
||||
|
||||
+14
-4
@@ -4783,8 +4783,13 @@ static int merge_settings(Settings *settings, const char *path) {
|
||||
}
|
||||
|
||||
if ((arg_settings_mask & SETTING_EPHEMERAL) == 0 &&
|
||||
settings->ephemeral >= 0)
|
||||
arg_ephemeral = settings->ephemeral;
|
||||
settings->ephemeral >= 0) {
|
||||
|
||||
if (!arg_settings_trusted)
|
||||
log_warning("Ignoring ephemeral setting, file %s is not trusted.", path);
|
||||
else
|
||||
arg_ephemeral = settings->ephemeral;
|
||||
}
|
||||
|
||||
if ((arg_settings_mask & SETTING_DIRECTORY) == 0 &&
|
||||
settings->root) {
|
||||
@@ -4953,8 +4958,13 @@ static int merge_settings(Settings *settings, const char *path) {
|
||||
}
|
||||
|
||||
if ((arg_settings_mask & SETTING_BIND_USER) == 0 &&
|
||||
!strv_isempty(settings->bind_user))
|
||||
strv_free_and_replace(arg_bind_user, settings->bind_user);
|
||||
!strv_isempty(settings->bind_user)) {
|
||||
|
||||
if (!arg_settings_trusted)
|
||||
log_warning("Ignoring bind user setting, file %s is not trusted.", path);
|
||||
else
|
||||
strv_free_and_replace(arg_bind_user, settings->bind_user);
|
||||
}
|
||||
|
||||
if (!FLAGS_SET(arg_settings_mask, SETTING_BIND_USER_SHELL) &&
|
||||
settings->bind_user_shell_set) {
|
||||
|
||||
@@ -120,6 +120,46 @@ run0 -u testuser \
|
||||
/run/systemd/machine/io.systemd.Machine \
|
||||
io.systemd.Machine.Open \
|
||||
'{"name":"shouldnotwork3", "mode": "shell", "user":"root","path":"/usr/bin/bash","args":["bash","-c","''touch /shouldnotwork; sleep 20''"]}')
|
||||
(! varlinkctl \
|
||||
call \
|
||||
/run/systemd/machine/io.systemd.Machine \
|
||||
io.systemd.Machine.Register \
|
||||
"{\"name\":\"shouldnotwork4\", \"class\":\"host\", \"leader\": $sleep_pid}")
|
||||
(! machinectl list | grep shouldnotwork4)
|
||||
(! run0 -u testuser \
|
||||
varlinkctl \
|
||||
call \
|
||||
/run/systemd/machine/io.systemd.Machine \
|
||||
io.systemd.Machine.Register \
|
||||
"{\"name\":\"shouldnotwork5\", \"class\":\"host\", \"leader\": $sleep_pid}")
|
||||
(! machinectl list | grep shouldnotwork5)
|
||||
(! busctl call \
|
||||
org.freedesktop.machine1 \
|
||||
/org/freedesktop/machine1 \
|
||||
org.freedesktop.machine1.Manager \
|
||||
RegisterMachine \
|
||||
'sayssus' \
|
||||
shouldnotwork6 \
|
||||
0 \
|
||||
"" \
|
||||
host \
|
||||
0 \
|
||||
"")
|
||||
(! machinectl list | grep shouldnotwork6)
|
||||
(! run0 -u testuser \
|
||||
busctl call \
|
||||
org.freedesktop.machine1 \
|
||||
/org/freedesktop/machine1 \
|
||||
org.freedesktop.machine1.Manager \
|
||||
RegisterMachine \
|
||||
'sayssus' \
|
||||
shouldnotwork7 \
|
||||
0 \
|
||||
"" \
|
||||
host \
|
||||
0 \
|
||||
"")
|
||||
(! machinectl list | grep shouldnotwork7)
|
||||
systemctl --user --machine testuser@ stop sleep.service
|
||||
test ! -f /shouldnotwork
|
||||
|
||||
|
||||
Reference in New Issue
Block a user