Systemd/src/core
Lennart Poettering 6592b9759c core: add new new bus call for migrating foreign processes to scope/service units
This adds a new bus call to service and scope units called
AttachProcesses() that moves arbitrary processes into the cgroup of the
unit. The primary user for this new API is systemd itself: the systemd
--user instance uses this call of the systemd --system instance to
migrate processes if itself gets the request to migrate processes and
the kernel refuses this due to access restrictions.

The primary use-case of this is to make "systemd-run --scope --user …"
invoked from user session scopes work correctly on pure cgroupsv2
environments. There, the kernel refuses to migrate processes between two
unprivileged-owned cgroups unless the requestor as well as the ownership
of the closest parent cgroup all match. This however is not the case
between the session-XYZ.scope unit of a login session and the
user@ABC.service of the systemd --user instance.

The new logic always tries to move the processes on its own, but if
that doesn't work when being the user manager, then the system manager
is asked to do it instead.

The new operation is relatively restrictive: it will only allow to move
the processes like this if the caller is root, or the UID of the target
unit, caller and process all match. Note that this means that
unprivileged users cannot attach processes to scope units, as those do
not have "owning" users (i.e. they have now User= field).

Fixes: #3388
2018-02-12 11:34:00 +01:00
..
audit-fd.c Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
audit-fd.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
automount.c mount: forbid mount on path with symlinks 2018-01-20 22:06:34 +00:00
automount.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
bpf-firewall.c bpf-firewall: fix warning text 2018-02-12 11:34:00 +01:00
bpf-firewall.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
cgroup.c core: add new new bus call for migrating foreign processes to scope/service units 2018-02-12 11:34:00 +01:00
cgroup.h core: add new new bus call for migrating foreign processes to scope/service units 2018-02-12 11:34:00 +01:00
chown-recursive.c Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
chown-recursive.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
dbus-automount.c dbus-automount: support more options in transient automount unit 2018-01-02 02:23:30 +09:00
dbus-automount.h core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-cgroup.c cgroup: add a new "can_delegate" flag to the unit vtable, and set it for scope and service units only 2018-02-12 11:34:00 +01:00
dbus-cgroup.h core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-device.c Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
dbus-device.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
dbus-execute.c dbus-execute: define bus_set_transient_errno() only if HAVE_SECCOMP (#7869) 2018-01-13 08:48:53 +09:00
dbus-execute.h core: rename bus_exec_command_set_transient_property() to bus_set_transient_exec_command() 2018-01-02 02:23:56 +09:00
dbus-job.c Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
dbus-job.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
dbus-kill.c dbus-kill: simplify bus_kill_context_set_transient_property() 2018-01-02 02:23:36 +09:00
dbus-kill.h core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-manager.c core: add new new bus call for migrating foreign processes to scope/service units 2018-02-12 11:34:00 +01:00
dbus-manager.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
dbus-mount.c dbus-mount: support more options in transient mount unit 2018-01-02 02:23:32 +09:00
dbus-mount.h core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-path.c dbus-path: add Paths= option to set path specs in transient path unit 2018-01-03 02:32:30 +09:00
dbus-path.h core/path: implement transient path unit 2017-12-15 09:10:34 +09:00
dbus-scope.c core: add new new bus call for migrating foreign processes to scope/service units 2018-02-12 11:34:00 +01:00
dbus-scope.h core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-service.c dbus-service: expose *ExitStatus= settings on bus 2018-01-03 02:32:10 +09:00
dbus-service.h core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-slice.c core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-slice.h core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-socket.c dbus-socket: simplify bus_socket_set_transient_property() 2018-01-02 02:25:04 +09:00
dbus-socket.h core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-swap.c core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-swap.h core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-target.c Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
dbus-target.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
dbus-timer.c core: double free in bus_timer_set_transient_property 2018-01-04 11:31:37 +01:00
dbus-timer.h core: add proper escaping to writing of drop-ins/transient unit files 2017-11-29 12:34:12 +01:00
dbus-unit.c core: add new new bus call for migrating foreign processes to scope/service units 2018-02-12 11:34:00 +01:00
dbus-unit.h core: add new new bus call for migrating foreign processes to scope/service units 2018-02-12 11:34:00 +01:00
dbus-util.c dbus-util: properly parse timeout values 2018-01-11 15:12:16 +01:00
dbus-util.h dbus-cgroup: simplify bus_cgroup_set_property() 2018-01-03 02:33:16 +09:00
dbus.c core: in bus_init_system() make sure we setup the system bus even if we inherit the API bus 2018-02-12 11:34:00 +01:00
dbus.h core: delay bus name synchronization after reload/reexec into a later event loop iteration 2018-02-12 11:34:00 +01:00
device.c core/device: remove unused variable 2018-01-24 12:52:23 +09:00
device.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
dynamic-user.c tree-wide: make use of new STRLEN() macro everywhere (#7639) 2017-12-14 19:02:29 +01:00
dynamic-user.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
emergency-action.c pid1: add option to disable service watchdogs 2018-01-22 18:10:03 +01:00
emergency-action.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
execute.c core/execute: make arguments constant if possible 2018-02-06 16:00:50 +09:00
execute.h core/execute: make arguments constant if possible 2018-02-06 16:00:50 +09:00
hostname-setup.c hostname-util: rework read_hostname_config() a bit 2017-11-20 16:43:15 +01:00
hostname-setup.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
ima-setup.c tree-wide: make use of new STRLEN() macro everywhere (#7639) 2017-12-14 19:02:29 +01:00
ima-setup.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
ip-address-access.c ip-address-access: let's exit the loop after invalidating our entry a (#7803) 2018-01-04 13:24:40 +01:00
ip-address-access.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
job.c cocci: use strempty() at more places 2018-01-10 17:11:19 +01:00
job.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
kill.c cocci: use strempty() at more places 2018-01-10 17:11:19 +01:00
kill.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
killall.c shutdown: make kill timeout configurable (#7835) 2018-01-10 19:00:20 +01:00
killall.h shutdown: make kill timeout configurable (#7835) 2018-01-10 19:00:20 +01:00
kmod-setup.c Fix build without libkmod 2017-11-24 13:54:20 +01:00
kmod-setup.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
load-dropin.c Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
load-dropin.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
load-fragment-gperf-nulstr.awk build-sys: fix the script used for generating load_fragment_gperf_nulstr (#6646) 2017-08-26 23:21:23 +09:00
load-fragment-gperf.gperf.m4 load-fragment: obsolete OnFailureIsolate= 2018-01-02 02:23:17 +09:00
load-fragment.c socket-util: introduce parse_socket_address_bind_ipv6_only_or_bool() 2018-01-02 02:23:21 +09:00
load-fragment.h Merge pull request #7198 from poettering/stdin-stdout 2017-11-19 19:49:11 +01:00
locale-setup.c log: minimize includes in log.h 2018-01-11 14:44:31 +01:00
locale-setup.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
loopback-setup.c loopback-setup: update log message (#7956) 2018-01-23 09:50:31 +09:00
loopback-setup.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
machine-id-setup.c machine-id-setup: use return log_error… pattern 2017-12-19 15:20:38 +01:00
machine-id-setup.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
macros.systemd.in Merge pull request #8104 from keszybz/tmpfiles-allow-overrides 2018-02-07 12:12:52 +01:00
main.c rationalize interface for opening/closing logging 2018-01-27 18:01:51 +00:00
manager.c core: delay bus name synchronization after reload/reexec into a later event loop iteration 2018-02-12 11:34:00 +01:00
manager.h core: delay bus name synchronization after reload/reexec into a later event loop iteration 2018-02-12 11:34:00 +01:00
meson.build core: add dbus-util.[ch] to simplify creating transient units 2018-01-02 02:22:36 +09:00
mount-setup.c mount-setup: fix MNT_CHECK_WRITABLE error handling, and log about the issue 2017-12-15 20:52:28 +01:00
mount-setup.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
mount.c core: fold manager_set_exec_params() into unit_set_exec_params() 2018-02-12 11:34:00 +01:00
mount.h mount: mountinfo event is supposed to always arrive before SIGCHLD 2018-01-23 11:09:06 +00:00
namespace.c namepace: fix error handling when clone_device_node() returns 0 2018-01-23 19:50:32 +01:00
namespace.h namespace: introduce parse_protect_system()_or_bool 2018-01-02 02:23:13 +09:00
org.freedesktop.systemd1.conf core: add new new bus call for migrating foreign processes to scope/service units 2018-02-12 11:34:00 +01:00
org.freedesktop.systemd1.policy.in.in Add SPDX license headers to various assorted files 2017-11-19 19:08:15 +01:00
org.freedesktop.systemd1.service Add SPDX license headers to various assorted files 2017-11-19 19:08:15 +01:00
path.c core/path: implement transient path unit 2017-12-15 09:10:34 +09:00
path.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
scope.c core: add new new bus call for migrating foreign processes to scope/service units 2018-02-12 11:34:00 +01:00
scope.h core: track scope controllers on the bus 2017-11-23 21:47:48 +01:00
selinux-access.c Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
selinux-access.h selinux: make sure we never use /dev/null for making unit selinux access decisions 2018-01-31 19:54:25 +01:00
selinux-setup.c Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
selinux-setup.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
service.c core: fold manager_set_exec_params() into unit_set_exec_params() 2018-02-12 11:34:00 +01:00
service.h service: Don't stop unneeded units needed by restarted service (#7526) 2017-12-05 16:51:19 +01:00
show-status.c Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
show-status.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
shutdown.c systemd-shutdown: use log_set_prohibit_ipc(true) 2018-01-27 19:51:30 +00:00
slice.c slice: system.slice should be perpetual like -.mount 2018-02-04 22:51:34 +00:00
slice.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
smack-setup.c tree-wide: use __fsetlocking() instead of fxyz_unlocked() 2017-12-14 10:42:25 +01:00
smack-setup.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
socket.c core: fold manager_set_exec_params() into unit_set_exec_params() 2018-02-12 11:34:00 +01:00
socket.h core/socket: add socket_port_type_from_string() 2017-12-23 18:46:16 +09:00
swap.c core: fold manager_set_exec_params() into unit_set_exec_params() 2018-02-12 11:34:00 +01:00
swap.h core: unify common code for preparing for forking off unit processes 2017-11-21 11:54:08 +01:00
system.conf manager: hook up IP accounting defaults 2017-09-22 15:24:55 +02:00
systemd.pc.in build-sys: make the dynamic UID range, and the container UID range configurable 2017-12-06 12:55:37 +01:00
target.c Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
target.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
timer.c core/timer: Prevent timer looping when unit cannot start 2018-01-22 17:13:00 +01:00
timer.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
transaction.c Replace free and return NULL with return mfree 2017-11-24 10:31:49 +00:00
transaction.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
triggers.systemd.in Add more file triggers to handle more aspects of systemd (#8090) 2018-02-06 10:11:36 +01:00
umount.c log: minimize includes in log.h 2018-01-11 14:44:31 +01:00
umount.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
unit-printf.c specifier: unify specifier implementations for user-related specifiers 2017-11-29 12:32:56 +01:00
unit-printf.h Add SPDX license identifiers to source files under the LGPL 2017-11-19 19:08:15 +01:00
unit.c core: add new new bus call for migrating foreign processes to scope/service units 2018-02-12 11:34:00 +01:00
unit.h core: add new new bus call for migrating foreign processes to scope/service units 2018-02-12 11:34:00 +01:00
user.conf core: rename StartLimitInterval= to StartLimitIntervalSec= 2016-04-29 16:27:48 +02:00