Commit Graph
8191 Commits
Author SHA1 Message Date
Dan Streetman 0f1cb04f9a tpm: update comment on transient handle GetCapability bug in kernel tpm resource manager
Add clarification and link to kernel bug.
2023-10-13 22:17:18 +02:00
Nick Rosbrook 6cf96ab456 core: add CoredumpReceive= setting
This setting indicates that the given unit wants to receive coredumps
for processes that crash within the cgroup of this unit. This setting
requires that Delegate= is also true, and therefore is only available
where Delegate= is available.

This will be used by systemd-coredump to support forwarding coredumps to
containers.
2023-10-13 15:13:11 -04:00
Nick Rosbrook b426b4eed8 cgroup-util: add cg_is_delegated helper
Take is_delegated from cgroup-show.c, and make it a generic helper
function. This new helper will be used again in a later commit.
2023-10-13 15:13:11 -04:00
Lennart Poettering efe511e910 varlink: don't generate %m error message if we are synthesizing the error
We are outputting a more useful log message anyway, the "Bad message"
error string is just confusing.
2023-10-12 15:26:27 +02:00
Lennart Poettering 6fa09278b8 varlink: refuse empty () structs/enums
If we encounter an empty struct in the varlink IDL it could also be an
empty enum. Refuse this to avoid the ambiguity.

The spec doesn't cover this case clearly, hence let's better be on the
safe side and refuse it rather than making a decision what it means.
2023-10-12 15:25:16 +02:00
Luca Boccassi 665c6e46e3 serialize: add serialize_image_policy() 2023-10-12 13:37:22 +01:00
Luca Boccassi 81b913f076 serialize: add open_serialization_file() 2023-10-12 13:37:22 +01:00
Luca Boccassi 1b30ccd81b serialize: add serialize_string_set() 2023-10-12 13:37:22 +01:00
Luca Boccassi 5612426d7b serialize: add serialize_item_tristate() 2023-10-12 13:37:22 +01:00
Luca Boccassi 6dae20ec41 serialize: add serialize_item_base64mem() 2023-10-12 13:37:22 +01:00
Luca Boccassi 3f12c5ff2e serialize: add serialize_item_hexmem() 2023-10-12 13:37:22 +01:00
Luca Boccassi 5897469a08 core: fix checking for extension-releases for ExtensionImages/Directories
The parsing is done after the image has been opened, not before, as it
cannot be done on an block device. Also fix returning on any error for
ExtensionDirectories, not just ENOENT.

Follow-up for 55ea4ef096
2023-10-12 12:17:58 +01:00
Lennart Poettering 80f6507c83 varlink: use the right validator for error replies 2023-10-11 18:19:36 +02:00
Lennart Poettering 041a66b843 varlink: didn't generate a varlink error reply if a failed method call handler already did
It might happen that a method call handler already generated an error
reply and then still propagated the error back to the varlink logic.
Let's not try to generate a 2nd reply from that error code then, but
simply proceed without. This simplifies handling of errors in method
call handlers, because they can uniformly return errno-style error
codes, and only if they want return a full Varlink errror.
2023-10-11 18:19:36 +02:00
Lennart Poettering c270fc448e varlink: don't bother replying about validation errors on method calls with 'oneway' set 2023-10-11 18:19:36 +02:00
Lennart Poettering 47c9bbb1ab varlink: automatically send ExpectedMore error message back when we were called without more=true set, but need it
Various Varlink calls only make sense if they are called with more=true
(i.e. in a mode where multiple replies are expected to be sent). If a
method call assumes it is called with more (manifested in the fact it
calls varlink_notify(), the call to reply to such messages) let's return
a recognizable error code for the violated expectation.

This adds a new error for this, org.varlink.service.ExpectedMore. Note
we are squatting the official org.varlink.service namespace, but for
such a basic thing it makes sense to add it there.
2023-10-11 18:19:36 +02:00
Michal Sekletar 7ad3a37022 dns-domain: fix the RFC reference 2023-10-11 23:09:18 +09:00
Lennart Poettering b2466e05c7 dissect: move helpers for categorizing DDIs into generic code
These tests are already done at two places, let's unify them in one
place, and tweak them slightly (specifically: require for considering a
DDI bootable in UEFI we also need need an init system inside).
2023-10-11 15:56:08 +02:00
Lennart Poettering a81fe93e95 dissect: allow confext/sysext to be in the same image
This reworks the image discovery logic, and conceptually allows DDIs
that are both confext and sysext to exist. Previously we'd only extract
one type of exension data from a DDI, with this we allow to extract both
if both exist.

This doesn't add support for true "multi-modal" DDIs, that qualify as
various things at once, it just lays some ground work that ensures we at
least can dissect such images.

This reworks 484d26dac1 quite a bit.

This changes systemd-dissect's JSON output, but given the
version with the fields it changes/dops has never been released (as the
above patch was merged post-v254) this shouldn't be an issue.
2023-10-11 15:56:08 +02:00
Lennart Poettering 08e29ac77d json: add json_build() support for env block serialization 2023-10-11 15:56:08 +02:00
Lennart Poettering 6fd38dc83a killall: suppress debug log if some cgroup doesn't have survive_final_kill_signal xattr set
This is the default case, hence really no reason to be noisy about that.
2023-10-11 11:39:48 +02:00
Lennart Poettering 91a6447607 fdset: improve debug logging for left-over fds
Let's show which fds are closed as part of the left-over fd set logic on
daemon reload/reexec cycles.

This is useful to debug accidentally unclaimed fds.
2023-10-11 11:39:48 +02:00
Lennart Poettering 98d8c37595 Merge pull request #29427 from ddstreet/cryptenroll_specify_handle_index
Cryptenroll specify handle index
2023-10-11 10:47:01 +02:00
Roland Hieber 7c6dd20046 sd-gpt: add defines for big-endian MIPS/MIPS64
According to the respective change in the DPS:
<https://github.com/uapi-group/specifications/pull/86>

Signed-off-by: Roland Hieber <rhi@pengutronix.de>
2023-10-11 10:10:49 +02:00
Dan Streetman 9c18019787 tpm2: don't use GetCapability() to check transient handles
The kernel tpm "resource manager" interface doesn't report that any transient
handles exist, even if they do, so don't bother asking if the handle is
transient.
2023-10-10 16:55:39 -04:00
Dan Streetman 1524184dd1 tpm2: do not call Esys_TR_Close()
Unfortunately, the tpm2-tss library doesn't reference count handles, and a call
to Esys_TR_Close() will remove the handle that could be in use by other
code. So stop calling Esys_TR_Close(), and leave the handle around until we
cleanup the entire ESYS_CONTEXT.
2023-10-10 05:56:45 -04:00
Dan Streetman adcd3266ec test: add tests for systemd-cryptenroll --tpm2-seal-key-handle
In TEST-70-TPM2, test systemd-cryptenroll --tpm2-seal-key-handle using the
default (0) as well as the SRK handle (0x81000001), and test using a non-SRK
handle index after creating and persisting a primary key.

In test/test-tpm2, test tpm2_seal() and tpm2_unseal() using default (0), the SRK
handle, and a transient handle.
2023-10-10 05:56:45 -04:00
Dan Streetman 382bfd90c3 cryptenroll: allow specifying handle index of key to use for sealing
This defaults to the SRK index.
2023-10-10 05:40:27 -04:00
Lennart Poettering b5ac77e9a5 Merge pull request #29493 from YHNdnzj/unit-always-set-user-home
core/execute: always set $USER and introduce SetLoginEnvironment=
2023-10-10 10:16:07 +02:00
Luca Boccassi ace07128ac dissect: avoid clobbering device-mapper error when activating verity
The device-mapper driver can return a wild variety of errors when trying
to activate the same dm-verity volume concurrently, as it might happen
with an image. There is a fallback logic in place, but the original
return code was clobbered when userspace signature check was added.
Add it back.

Follow-up for c2fa92e7e8
2023-10-09 18:41:16 +01:00
Mike Yuan 854eca4a95 core/execute: always set $USER and introduce SetLoginEnvironment=
Before this commit, $USER, $HOME, $LOGNAME and $SHELL are only
set when User= is set for the unit. For system service, this
results in different behaviors depending on whether User=root is set.

$USER always makes sense on its own, so let's set it unconditionally.
Ideally $HOME should be set too, but it causes trouble when e.g. getty
passes '-p' to login(1), which then doesn't override $HOME. $LOGNAME and
$SHELL are more like "login environments", and are generally not
suitable for system services. Therefore, a new option SetLoginEnvironment=
is also added to control the latter three variables.

Fixes #23438

Replaces #8227
2023-10-10 00:00:26 +08:00
Yu Watanabe cf3d95b25d tree-wide: use path_simplify_alloc() more 2023-10-07 16:00:03 +09:00
Yu Watanabe 86f6d32eba varlink: drop unnecessary condition
When 'exec' is true, 'c' is always non-NULL.

Fixes CID#1522384.
2023-10-07 15:51:05 +09:00
Yu Watanabe 939630ae28 varlink: fix typo
Follow-ups for #29325.
2023-10-07 15:48:22 +09:00
Emil Velikov cb341090d0 sd-boot: add auto-reboot and auto-poweroff entries
Currently only an auto-reboot-to-firmware entry is available. For other
features - like reboot and power off - one needs to press the uppercase
B and O respectively.

Embedded devices may be missing a full fledged keyboard, so allow for
sd-boot to generate those entries.

v2:
 - add to the config parser/man/bootctl/sd-boot info screen
 - keep them off by default
 - add the (O)ff and re(B)oot help text if boot entries are not shown
 - drop irrelevant get_os_indications_supported() comment
 - s/ShutDown/Shutdown/

v3:
 - cast shutdown_system() reboot_system() to void

v4:
 - shutdown -> poweroff
 - add trailing ",ignoring" in parser message
 - drop explicit default state assignment to "false"

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
2023-10-06 16:21:23 +01:00
Yu Watanabe 34ba0f5150 Merge pull request #29325 from poettering/varlink-introspect
varlink: add introspection support + varlinkctl + varlinkify one first command line tool (systemd-pcrextend)
2023-10-06 21:58:17 +09:00
Lennart Poettering 4e16d5c69e pcrextend: make pcrextend tool acccessible via varlink
This is primarily supposed to be a 1st step with varlinkifying our
various command line tools, and excercise in how this might look like
across our codebase one day. However, at AllSystemsGo! 2023 it was
requested that we provide an API to do a PCR measurement along with a
matching event log record, and this provides that.
2023-10-06 11:49:38 +02:00
Lennart Poettering 02b0d24d1e varlink: add varlink_invocation() call
This call checks if we are invoked in a socket-activation Varlink server
context. It's useful for commands that can be run from the command line
or as Varlink service and then either serve commands from the cmdline or
those from Varlink.
2023-10-06 11:49:38 +02:00
Lennart Poettering 2e5edb93b7 varlink: add new call varlink_server_loop_auto()
This is a helper call that runs the specified VarlinkServer object in an
event loop, and exits once no more connections exist.

This is useful for pure varlink servers (i.e. those which only server
varlink requests and do nothing else), to run as long as there's
something to do and exit right after.
2023-10-06 11:49:38 +02:00
Lennart Poettering 206504a594 varlink: add varlink_server_listen_auto() helper
This new helper will automatically take listening fds passed in from the
service manager and processes varlink on them. It's useful for Varlink
services that shall be socket activatable.
2023-10-06 11:49:38 +02:00
Lennart Poettering 4772334013 varlink: add exit-on-idle logic for Varlink server
This adds a logic that if enabled ensures sd_event_exit() is called
whenever the varlink connection count hits zero.

This is useful for implementing pure Varlink services (i.e. services
whose only job is to serve Varlink requests), that shall run only as
long as needed, i.e. as long as at least one request is being served.
2023-10-06 11:49:38 +02:00
Lennart Poettering 7dce9ead5d oomd: move SubscriptionTaken Varlink error out of generic Varlink code
This error is a private error returned by PID 1 to oomd. It's internal,
and very specific to the use-case. Hence it should not be part of the
org.varlink.service interface (which isn't really our namespace anyway).

Hence, let's clean this up and move it over to the ManagedOOM varlink
interface of PID, where it belongs.

Since this is a private protocol of our two daemons, and the client
(i.e. oomd) doesn't explicitly test for this error anyway we can just
move it over without ill effects.
2023-10-06 11:49:38 +02:00
Lennart Poettering abef4a7b3c tree-wide: make all our Varlink APIs introspectable 2023-10-06 11:49:38 +02:00
Lennart Poettering 0f274a8790 varlink: add varlink_connect_url() and varlink_connect_exec() calls 2023-10-06 11:49:38 +02:00
Lennart Poettering 7e006b49ad varlink: implement the org.varlink.service introspection interface by default + hook up validator
Fixes: #23874
2023-10-06 11:49:38 +02:00
Lennart Poettering f946d4c9ec varlink: add introspection data for the org.varlink.service and io.systemd interfaces
The official org.varlink.service interface definition, as per:

https://varlink.org/Service

And the io.systemd service where we carry some super generic errors our
Varlink implementation generates.
2023-10-06 11:49:38 +02:00
Lennart Poettering 9fc843ed0e varlink: allow associating Varlink IDL information with a VarlinkServer
The data is not used for anything yet, but this will be added in later
commits.
2023-10-06 11:49:38 +02:00
Lennart Poettering e50b2a93d6 varlink: add IDL/introspection logic 2023-10-06 11:49:38 +02:00
Daan De Meyer 8aa59287c0 Merge pull request #29456 from yuwata/journal-replace-truncating-with-punching-holes
journal: replace truncating with punching holes
2023-10-06 09:18:06 +02:00
Lennart Poettering 8240fa920d varlink: add new helper that reports whether connection is idle
This is useful to allow event loops to run exactly as long as there's
something to do but not longer.
2023-10-06 07:44:47 +02:00