Commit Graph
48976 Commits
Author SHA1 Message Date
Mike Yuan ac21fafbea bus-wait-for-units: drop 'current' field
This is not used anywhere.
2024-04-19 10:08:37 +08:00
Mike Yuan cc6978d6ae bus-wait-for-units: check for existing unit first, use hashmap_ensure_put 2024-04-19 10:08:36 +08:00
Mike Yuan df0183d8f1 bus-wait-for-units: make callback type end with "_t" 2024-04-19 10:08:36 +08:00
Mike Yuan 4b8fdb4681 bus-wait-for-units: drop ready_callback
This is never used, and given that bus_wait_for_units_run
returns BusWaitForUnits.state it's not really useful.
2024-04-19 10:08:36 +08:00
Mike Yuan ad6b84d960 systemctl-start-unit: Subscribe() is unnecessary if we RefUnit explicitly
Subscribe() enables full signal delivery on API bus. But aside from
that, if a unit/job is explicitly Ref()'d, manager also emits the
signal. See bus_foreach_bus() for details.

bus-wait-for-units refs every unit to wait for, so there's no need
to Subscribe() on top of that. In verb_clean_or_freeze() Subscribe()
is not called either.
2024-04-19 10:08:36 +08:00
Mike Yuan 848cdaa6dd systemctl: use FOREACH_ARRAY and FOREACH_ELEMENT more 2024-04-19 10:08:35 +08:00
Mike Yuan 8c8687852a core/dbus: modernize bus_foreach_bus 2024-04-19 10:08:35 +08:00
Mike Yuan fcd7aef724 core/unit: use UNIT_IS_INACTIVE_OR_FAILED at one more place 2024-04-19 10:08:35 +08:00
Luca Boccassi 2ca6bd9b77 test: initialize _cleanup_ variables
Missed one in a previous PR.

Follow-up for e5689f04dd
2024-04-19 10:26:43 +09:00
Nick Rosbrook c0bc1e8971 copy: ignore -EOPNOTSUPP from copy_file_range()
According to copy_file_range (2), errno will be set to EOPNOTSUPP when
the file system does not support copy_file_range(). Since there is
already fallback logic in place here for other kinds of errors, add
-EOPNOTSUPP to the list of ignored errors.
2024-04-19 09:57:25 +09:00
Luca Boccassi e54bf3fe0b Merge pull request #32299 from yuwata/network-radv-ignore-rs-from-the-same-interface
network/radv: ignore RS message from the same interface
2024-04-18 23:45:06 +02:00
Luca Boccassi 7f4f75593d Merge pull request #32292 from yuwata/sd-radv-send-on-stop
sd-radv: set only basic information in RA message on stop
2024-04-18 23:24:42 +02:00
Lennart Poettering dd37963aff Merge pull request #31790 from poettering/pcrlock-policy-fix
Replace PolicyAuthValue by PolicySigned as access policy for pcrlock policy nvindex
2024-04-18 21:11:27 +02:00
Mike Yuan 1ac8747da9 Merge pull request #32336 from teknoraver/foreach_element
Foreach element
2024-04-19 01:40:33 +08:00
Luca Boccassi b84a0bf3ab Merge pull request #32144 from bluca/portable_clean
portablectl: add --clean parameter for detaching
2024-04-18 18:15:20 +02:00
Lennart Poettering 43a59b8b86 pcrlock: rework --recovery-pin= to take three different arguments
This reworkds --recovery-pin= from a parameter that takes a boolean to
an enum supporting one of "hide", "show", "query".

If "hide" (default behaviour) we'll generate a recovery pin
automatically, but never show it, and thus just seal it and good.

If "show" we'll generate a recovery pin automatically, but display it in
the output, so the user can write it down.

If "query" we'll ask the user for a recovery pin, and not automatically
generate any.

For compatibility the old boolean behaviour is kept.

With this you can now do "systemd-pcrlock make-policy
--recovery-pin=show" to set up the first policy, write down the recovery
PIN. Later, if the PCR prediction didn't work out one day you can then
do "systemd-pcrlock make-policy --recovery-pin=query" and enter the
recovery key and write a new policy.
2024-04-18 18:12:24 +02:00
Lennart Poettering 0ec4c098dd pcrlock: generate recovery PINs via make_recovery_key()
We already have infrastructure for generating nice recovery keys, for
the usual cryptenroll recovery keys. Let's reuse them here, as they are
nicer to read and type than the base64 encoded randomness we so far
used.

Previously valid recovery keys remain valid, in their original format.
For future enrollments we'll however have nicer, easier recovery keys to
deal with.
2024-04-18 18:12:23 +02:00
Lennart Poettering d10d4a3701 tpm2-util: now that we don't use PolicyAuthValue anymore, let's not set an authValue anymore for the policy nvindex
We have now switched from PolicyAuthValue to PolicySigned to control
access to the policy nvindex to. This means there's no point in setting
an authValue on the nvindex anymore, hence drop this.
2024-04-18 18:12:23 +02:00
Lennart Poettering cb835a2ed1 pcrlock: switch access policy for nvindex to store policy in from PolicyAuthValue to PolicySigned (with an HMAC-SHA256 key)
So far the nvindex to store the pcrlock policy in was protected via a
PolicyAuthValue policy (i.e. with a simple PIN set on the nvindex).
That's a bad idea however, as it means an attacker can simply remove and
re-create the nvindex and the "name" of the nvindex does not change,
thus defeating the logic. (This is because the authValue is *not* part
of the "name" of an nvindex!).

Fix this by switching from PolicyAuthValue to PolicySigned with an
HMAC-SHA256 key. Behaviour is very similar: however, the PIN is now part
of of the access policy hash, which *is* part of the "name" of an
nvindex. Thus, if an attacker removes and recreates the nvindex it has
to provide the same PIN again or the "name" of the nvindex will change.
Mission accomplished.

I'd like to thank Chris Coulson for finding this issue (and helping me
address it). Thank you!
2024-04-18 18:12:23 +02:00
Lennart Poettering 19d82e1bee tpm2-util: add comment explaining what tpm2_define_policy_nv_index() actually does 2024-04-18 18:12:23 +02:00
Lennart Poettering 371b594414 tpm2-util: load external key into NULL hierarchy if private key is provided
If we load an external key into the TPM we must do so in the NULL
hierarchy. An external key after all is one that is not wrapped by any
hierarchy's seed.

See TPM2 spec, Part 3, Section 12.3.1
2024-04-18 18:12:23 +02:00
Lennart Poettering d0f8da9815 tpm2-util: rename tpm2_get_pin_auth() → tpm2_auth_value_from_pin()
Just some renaming. I found the old name a bit confusing since it sounds
as if this would get the pin from somewhere, but it really doesn't. It
just converts a PIN into an auth_value, and I think saying so explicitly
makes things easier to grok.
2024-04-18 18:12:23 +02:00
Lennart Poettering 98ef5f8419 tpm2: export tpm2_get_name()
We later want to use this from pcrlock.c, hence export it.
2024-04-18 18:12:23 +02:00
Lennart Poettering 9892b7238b tpm2-util: import two more symbols from tpm2-tss libraries
We want to make use of TPM_PolicySigned soon, hence import the necessary
symbols from tpm2-tss.
2024-04-18 18:12:23 +02:00
Matteo Croce 854711645b use FOREACH_ELEMENT
Use FOREACH_ELEMENT where possible. Generated with this command,
and checked manually:

    git grep -l 'FOREACH_ARRAY.*ELEMENTSOF' | \
    xargs sed -ri 's/FOREACH_ARRAY\((.*), (.*), (ELEMENTSOF.*)\)/FOREACH_ELEMENT(\1, \2)/'
2024-04-18 17:39:34 +02:00
Matteo Croce 64f7b2961a introduce FOREACH_ELEMENT
Add a FOREACH_ELEMENT() macro which just passes ELEMENTSOF(v)
as third argument to FOREACH_ARRAY().
2024-04-18 17:39:34 +02:00
Luca Boccassi 61584182f5 Merge pull request #32328 from YHNdnzj/deserialize-objective
core: follow-ups for objective serialization
2024-04-18 17:07:32 +02:00
Lennart Poettering 51286123da Merge pull request #32330 from poettering/status-invocation
systemctl: show invocation ID in unit status output
2024-04-18 15:47:20 +02:00
Mike Yuan d336b8ee9c core/manager: log about previous objective
Addresses https://github.com/systemd/systemd/pull/32320#discussion_r1569192295
2024-04-18 20:32:52 +08:00
Mike Yuan 0292afabee core/manager-serialize: serialize objective string
Follow-up for 8c15bf36e1

I just realized that we should not serialize the number
of internal enum, as that's subject to changes and such
changes would be hard to notice. Let's serialize strings
properly instead.
2024-04-18 20:32:20 +08:00
Mike Yuan 37ca2ccf33 core/manager: introduce ManagerObjective string table lookup 2024-04-18 20:32:20 +08:00
Mike Yuan a48ad66f76 core/manager: also log soft-reboot count along with timespan 2024-04-18 20:25:42 +08:00
Mike Yuan 6985e3964d core: switch j->unit->manager to j->manager 2024-04-18 20:25:39 +08:00
Antonio Alvarez Feijoo e2fe5c4b98 boot: fix assignment of ret_* variables in initrd_prepare() 2024-04-18 14:13:38 +02:00
Luca Boccassi 966d7977c7 portablectl: add --clean parameter for detaching
Calls CleanUnit on each portable service being removed, after it has
stopped
2024-04-18 10:47:29 +01:00
Lennart Poettering f1d345ed76 systemctl: show invocation ID in unit status output
I think we should put more emphasis on the invocation ID as a handle for
a specific runtime cycle of a unit. Let's start with actually showing it
to users.

See: #16035
2024-04-18 11:20:59 +02:00
Yu Watanabe 5e485e1aa2 udev: fix assignment of ret_truncated
Follow-ups for 089bef6631.
2024-04-18 08:25:03 +02:00
Yu Watanabe 955d5012e0 blockdev-util: fix typo
Follow-up for 33ff155957.
2024-04-18 13:08:14 +09:00
Yu Watanabe f846002fa2 Merge pull request #32192 from yuwata/part-scan
blockdev-util: fix detection of partscan
2024-04-18 11:38:48 +09:00
Yu Watanabe d2a0ef6073 Merge pull request #32249 from CodethinkLabs/vmspawn/predicatable_tap_names
vmspawn: generate predicatable TAP device names and MAC addresses
2024-04-18 10:26:07 +09:00
Yu Watanabe 33ff155957 blockdev-util: also read 'ext_range' sysattr to check if the partscan is enabled
The 'capability' sysattr was deprecated by
https://github.com/torvalds/linux/commit/e81cd5a983bb35dabd38ee472cf3fea1c63e0f23 (v6.3).
2024-04-18 09:48:26 +09:00
Yu Watanabe 705c418f20 sd-device: introduce device_get_sysattr_unsigned_full() 2024-04-18 09:46:57 +09:00
MaxHearnden bccd7be328 systemctl: allow user to suppress output when no action scheduled (#32278) 2024-04-18 09:44:22 +09:00
WinterhumanandMike Yuan ad938537ef journalctl: update help to say "priority range" (#32323)
Clarify that `-p, --priority=` always treats its option as a priority range, even when given
a single log level per the full man page description.

Co-authored-by: Mike Yuan <me@yhndnzj.com>
2024-04-18 09:43:28 +09:00
Yu Watanabe 769f9744b7 network/ndisc: disable Neighbor discovery client if RADV is enabled
Running both sd-ndisc and sd-radv should be mostly a misconfiguration,
but may not. So, let's only disable sd-ndisc by default when sd-radv is
enabled, but allow when both are explicitly requested.
2024-04-18 09:40:23 +09:00
Yu Watanabe 50ba4e401a sd-radv: refuse packet from the same interface
Prompted by https://github.com/systemd/systemd/pull/32267#discussion_r1566721306.
2024-04-18 09:40:23 +09:00
Yu Watanabe 258729a3b8 Merge pull request #32308 from yuwata/sd-ndisc-disable-timer-on-recv
sd-ndisc: disable one more timer event source
2024-04-18 09:28:16 +09:00
Yu Watanabe 52fb945cb7 Merge pull request #32318 from YHNdnzj/skip-leading-char
journal-gatewayd: use skip_leading_chars
2024-04-18 06:18:09 +09:00
Luca Boccassi b3f548615f core: rename SoftRebootStartTimestamp -> ShutdownStartTimestamp and generalize
Follow-up for 54f86b86ba
2024-04-17 18:19:27 +01:00
Luca Boccassi 8c15bf36e1 manager: serialize current objective
So that we can tell what happened before the exec. It is overwritten
shortly after deserialization. Use it to bump the soft reboots counter.
2024-04-17 18:19:27 +01:00