Commit Graph
57473 Commits
Author SHA1 Message Date
Mike Yuan 79e6bfb1e6 core/manager: use UNIT_IS_ACTIVE_OR_RELOADING rather than hardcoding service states
except for SERVICE_EXITED which has to be checked manually.
2025-12-19 02:18:44 +01:00
Lennart Poettering 2062b817d4 keyutil: Add extract-certificate (#39962)
Useful to extract a certificate from a hardware token to a file, for
example in mkosi to ship the certificate from a hardware token in
/usr/lib/verity.d in an image
2025-12-18 21:25:57 +01:00
Lennart Poettering b15cf11327 repart: add basic support for LUKS2 integrity verification (#39295)
Authenticated disk encryption is experimentally supported by cryptsetup
since v2.0.0 and allows for automatic dm-integrity setup for LUKS
devices. Add support for the mode to systemd-repart. The PR adds support
for `cryptsetup luksFormat --integrity` to systemd-repart and
"encryptedwithintegrity" dissection policy.

Limitations:
- No discard, online-only mode for repart.

Closes #39250
2025-12-18 21:19:39 +01:00
Miao Wang dc3e544104 ssh-proxy: expect OK PORT response from vsock-mux
The unix-domain socket to AF_VSOCK multiplexers in Firecracker and
vhost-device-vsock sends OK PORT response to the client, resulting
ssh clients to abort the connection with the additional response. This
patch addresses this issue by waiting and expecting the possible OK PORT
response from the multiplexer, if any, and then handover the socket fd
to the ssh client. It only checks if the response begins with OK and
consume the response till the first \n, for simplicity.

Signed-off-by: Miao Wang <shankerwangmiao@gmail.com>
2025-12-18 21:15:41 +01:00
Mike Yuan 71aaa744b8 Assorted minor cleanups (#40136) 2025-12-18 20:53:58 +01:00
Lennart Poettering 627e583c64 Use ANSI CSI 18 to query console size (#39833) 2025-12-18 20:49:26 +01:00
Daan De Meyer 30465f789c test: introduce test-sleep and use it in several integration tests (#40086) 2025-12-18 17:47:57 +01:00
Mike Yuan 6dacabe534 journalctl-show: drop redundant condition
The combination of --follow and --reverse would have been
rejected in parse_argv() already.
2025-12-18 17:37:26 +01:00
Mike Yuan 58e9239fd7 core/dbus-manager: drop dangling verify_run_space_and_log() prototype
Follow-up for 65d9ef40f2
2025-12-18 17:37:26 +01:00
Mike Yuan f145fc8c7e core/manager: constify DEFAULT_TASKS_MAX 2025-12-18 17:37:25 +01:00
Mike Yuan c53b324ecf socket-label: mark socket_address_bind_ipv6_only_or_bool_from_string as _pure_ 2025-12-18 17:37:25 +01:00
Mike Yuan 4a6e5b0ae9 core: various cleanups for setup_input/output (#39860) 2025-12-18 15:56:42 +01:00
Daan De Meyer 42b6f87a42 keyutil: Add extract-certificate
Useful to extract a certificate from a hardware token to a file, for
example in mkosi to ship the certificate from a hardware token in
/usr/lib/verity.d in an image
2025-12-18 13:57:32 +01:00
Daan De Meyer 9fc537437b keyutil: Rename public to extract-public 2025-12-18 13:56:38 +01:00
Daan De Meyer 8440492e90 openssl-util: Cast to const type 2025-12-18 13:56:38 +01:00
Daan De Meyer 8ecb7deafa openssl-util: Fix logging 2025-12-18 13:56:37 +01:00
Luca Boccassi 9e418cd075 inhibit: allow filtering and add --json support for --list (#39973) 2025-12-18 10:47:23 +00:00
Luca Boccassi 9a34971421 fido2: fix enrolling when UV is required ('alwaysUv')
When a Yubikey or other fido2 device has FIPS mode enabled, UV will
always be required and cannot be disabled. Unhelpfully, when it is not
sent down, the hardware token (not the library) returns a generic
FIDO_ERR_MISSING_PARAMETER:

$ systemd-cryptenroll --fido2-device=auto --fido2-with-client-pin=no foo
<...>
libfido2: rx: payload_len=1
libfido2: fido_rx: buf=0x55c9ce170940, len=1
libfido2: 0000: 14
libfido2: cbor_parse_reply: blob[0]=0x14
libfido2: fido_dev_get_assert_rx: adjust_assert_count
Failed to ask token for assertion: FIDO_ERR_MISSING_PARAMETER

This can be set even when the token doesn't support UV (as in, fingerprint
reader), in which case using the PIN is required.

Check if 'alwaysUv' is set, and if not already configured, force
either UV (if available) or PIN when enrolling.
2025-12-18 10:56:43 +01:00
Jeremy Kerr cc1ed77280 udev-builtin-net_id: Extend persistent naming support to MCTP interfaces
Now that we have Management Component Transport Protocol (MCTP) transports
available over USB, it would be helpful to apply udev's persistent
naming rules to MCTP interfaces, to follow the USB hub/port topology.

Enable persistent naming for ARPHRD_MCTP-type devices, using a "mc" name
prefix, and add appropriate definitions for the v260 naming sheme.
2025-12-18 10:54:51 +01:00
Popax21 f603bc37f4 nss-resolve: add env var to specify resolved ifindex
Adds a new `SYSTEMD_NSS_RESOLVE_INTERFACE` environment variable to the nss-resolve module, whose value is subsequently passed down to the `ifindex` resolved lookup option.
This allows name lookups to be constrained to a just single interface for e.g. captive portal browsers.
2025-12-18 10:53:27 +01:00
Zbigniew Jędrzejewski-Szmek d91a184509 core: use terminal_get_size_by_csi18 to query terminal size
This allows us to query the window size without moving the cursor. We have
various reports about the cursor being in an unexpected position and/or state.

Closes https://github.com/systemd/systemd/issues/37526.
2025-12-18 10:47:19 +01:00
Luca Boccassi f33d550d44 Add polkit support to varlinkctl and sd-sysext (#39796) 2025-12-18 09:10:53 +00:00
Vitaly Kuznetsov 771085291d dissect-image: introduce 'encryptedwithintegrity' policy
LUKS2 supports built-in integrity checking which may come very handy to
mitigate partial rollback attacks on the storage when only some specific
parts are restored to some old encrypted state. Specific use-cases like
Confidential VMs may want to mandate the usage of feature e.g. on the root
volume. Introduce "encryptedwithintegrity" image policy to support that.

Note, due to the current libcryptsetup limitations, checking whether the
feature is enabled or not for the 'file' case (e.g. DDI image as a raw file)
requires setting up a loop device. To avoid that and keep dissect fully
functional when working unpriviliged, implement a minimal custom LUKS header
parser.
2025-12-18 09:12:54 +01:00
Vitaly Kuznetsov 1a4a34287f repart: add basic support for LUKS2 integrity verification
Authenticated disk encryption is experimentally supported by cryptsetup since
v2.0.0 and allows for automatic dm-integrity setup for LUKS devices. Add
support for the mode to systemd-repart. Currently, the option can only be used
in 'online' mode as libcryptsetup does not support creating integrity data
without the use of in-kernel dm-integrity infrastructure.

Integrity=/IntegrityAlgorithm= are added in the anticipation of other integrity
protection options, e.g. enabling dm-integrity for a plain unencrypted
partition.
2025-12-18 09:12:49 +01:00
Mike Yuan 16bae207c2 core/dbus-execute: respect write flags for empty assignments too 2025-12-18 00:39:59 +01:00
Mike Yuan 8619c65fcf core/service: const and pure'ify service_restart_usec_next() 2025-12-18 00:39:59 +01:00
Antonio Alvarez Feijoo 2824182a12 inhibit: allow filtering --list also by what, who and why
Currently the list can only be filtered by mode, so make use of the remaining
options available to filter the output.
2025-12-17 23:23:44 +00:00
Antonio Alvarez Feijoo c40ab2337f inhibit: add --json support for --list 2025-12-17 23:23:44 +00:00
Mike Yuan 7498c391ec core/exec-invoke: remove redundant accmode validation on stderr
Follow-up for 171ceb4a00

In setup_output() we assume stdout has been set up properly
before stderr, hence the stdout we're inheriting from must
be writable (or more precisely, would have been adjusted to be).
Hence no need to duplicate it.
2025-12-17 23:23:22 +00:00
Mike Yuan a8e1796b09 core/exec-invoke: split out maybe_inherit_stdout_from_stdin(), use exec_input_is_inheritable()
Note that exec_input_is_inheritable() rightfully refuses EXEC_INPUT_FILE,
in which case std_output would have been reset in service_fix_stdio()
already.

While at it, use the generic fallback logic of first trying user manager
stdout when stdin is not writable.
2025-12-17 23:23:22 +00:00
Mike Yuan e04382384d core/execute: introduce exec_input_is_inheritable() helper 2025-12-17 23:23:22 +00:00
Mike Yuan b34aee0440 core/exec-invoke: socket_fd must be set if any of stdio requests it
This is checked as one of the very first things in exec_invoke(),
hence remove the condition in fixup_input() and the whole
fixup_output().
2025-12-17 23:23:22 +00:00
Mike Yuan c8a6c42e53 core/exec-invoke: use path_equal() on for stdio files 2025-12-17 23:23:22 +00:00
Mike Yuan 4dac3c6d76 core/execute-serialize: clean up stdio serialization
* Do not interleave root_directory_as_fd with stdio fields
* Do not use different serialization key for different modes
  pointing to same path
* Escape stdio file paths (as per
  9be46b1da8)
2025-12-17 23:23:22 +00:00
Mike Yuan 27660b470f core/dbus-execute: path is required if stdio is specified as file
This partially reverts d6ff82d37c.
2025-12-17 23:23:22 +00:00
Mike Yuan eac3867764 core/exec-invoke: fix stdout and stderr sharing the same named fd
Previously such usage would be refused by exec_context_named_iofds()
with -ENOENT, however setup_output() carried relevant logic.
2025-12-17 23:23:22 +00:00
Luca Boccassi 34f41471fc sysext: add polkit support to varlink service 2025-12-17 23:22:05 +00:00
Luca Boccassi a2d53619c0 varlinkctl: add support for polkit interactive auth 2025-12-17 23:22:05 +00:00
Luca Boccassi 90f4c0473a core: set Result=start-limit-hit when a unit is rate limited
There is currently no way to figure out a rate limit was hit on a unit,
as the last result is stripped in order to keep reporting the first
result, which is useful in case of a watchdog failure, which is the
reason why it was changed as such.

But rate limiting is also an important information to provide to
users, so allow the Result property to reflect it when it
happens.
2025-12-18 00:19:09 +01:00
Luca Boccassi b262ded0bd Boot loader menu docs and tweaks (#39842) 2025-12-17 23:00:59 +00:00
Zbigniew Jędrzejewski-Szmek 3cdd80d3e0 sd-boot: correct typos 2025-12-17 22:55:38 +01:00
Luca Boccassi 28c5929e90 Update syscalls table
ninja -C build update-syscall-tables update-syscall-header
2025-12-17 13:33:26 +00:00
Yu Watanabe b6abe84602 core: fix extensions refreshing (dlopen() shenanigans) (#40112) 2025-12-17 18:41:23 +09:00
Vivian Wang 2e8985113b stub: Use log_debug if addons has no applicable sections
This can happen expectedly if an addon purely provides .dtbauto
sections, and there's no match for this machine. Reduce the log message
of this case to "debug" level.
2025-12-17 18:37:49 +09:00
Mike Yuan 4d136f1462 core: dlopen() libcryptsetup in extensions refreshing
Follow-up for a08f2ea02d

This fixes extensions refreshing + verity-protected DDIs.
TEST-50-DISSECT previously passed because confext refreshing
is tested after live mount, the latter of which used to
load libcryptsetup in pid1.
2025-12-16 22:11:45 +01:00
Mike Yuan 12df39fadf core/service: defer cryptsetup dlopen to helper process
This should still be safe, as we block dlopen() in namespace_fork().

Partially reverts 9252e26f4c.
2025-12-16 21:57:37 +01:00
Mike Yuan 8f397d5922 core/unit: add unit_fork_helper_process_full() that takes ForkFlags 2025-12-16 21:30:36 +01:00
Mike Yuan 6c1bcdd614 core/exec-credential: fix credentials plain dir exchanging
Follow-up for d796c6b7c6

rename() may yield ENOTEMPTY rather than EEXIST for existing dir,
so catch that too. Also, both the source and target must be
writable when exchanging.

Test coverage for this logic (i.e. user units with ExecStartPre=)
will be added later.
2025-12-16 21:25:51 +01:00
Mike Yuan 29a823b3b6 process-util: add a flag for retaining dlopen()-ability
While blocking dlopen() in child generally makes sense, it does
also lead to misery - in the very case of extension/cred refreshing
it then enforces loading of libcryptsetup/libacl in pid1, which
are otherwise never used. Let's add a flag to opt out hence, but
still prohibit it in namespace_fork/enter().
2025-12-16 21:07:20 +01:00
Mike Yuan 5188da568c acl-util: systematically fall back to fchmod() if acl is not available
Same as 2a64b56da4, but for
fd_acl_make_writable().

While at it, un-export fd_acl_make_{read_only,writable}_fallback(),
instead apply ifdeffery in .c
2025-12-16 20:16:58 +01:00