Commit Graph

71214 Commits

Author SHA1 Message Date
Zbigniew Jędrzejewski-Szmek
b83a59f8a7 man: document all the new paths 2024-03-07 19:14:36 +01:00
Zbigniew Jędrzejewski-Szmek
6378f257e7 various: use new config loader instead of config_parse_config_file()
This means the main config file is loaded also from /run and /usr.

We should load the main config file from all the places where we load drop-ins.

I realize I had a giant blind spot: I always assumed that we load config files
from /etc, /run, /usr/local/lib, /usr/lib. But it turns out that we only used
those paths for drop-ins. For the main config file, we only looked in /etc. The
docs actually partially described this behaviour, i.e. most SYNOPSIS sections
and some parts of the text, but not others.

This is strange, because 6495361c7d was completely
bogus with the behaviour before this patch. We had a huge discussion before it
was merged, and clearly nobody noticed this. Similarly, in the previous version
of the current pull request, we had a long discussion about the appropriate
order of directories, and apparently nobody noticed that there was no order,
because only looked in one directory. So the blind spot seems to have been
shared.

Also, systemd-analyze cat-config behaved incorrectly, i.e. its behaviour matches
the new behaviour.

Possibly, in the future it'll make it easier to add support for --root.
2024-03-07 19:14:36 +01:00
Zbigniew Jędrzejewski-Szmek
e7e52ff9b6 shared/conf-parser: add function which implements the standard config file set
Also allow config_parse_many() to be called for config files without
sections. The test uses such a file.
2024-03-07 19:14:36 +01:00
Zbigniew Jędrzejewski-Szmek
d8a91c6b9f shared/conf-parser: use chase() in config_parse_many_files()
The function was partially implementing chroot lookups. It would be given
file names that were prefixed with the chroot, so it would mostly work.
But if any of those files were symlinks, fopen() would do the wrong thing.

Also we don't need locking.

So give 'root' as the argument and use chase_and_fopen_unlocked() to get
proper chroot-aware lookups.

The only place where config_parse_many() is called with root is is repart.c.
So this is a follow-up for e594a3b154 and
34f2fd5096.
2024-03-07 18:49:44 +01:00
Zbigniew Jędrzejewski-Szmek
9bc7493098 strv: add helper to extend strv from both sides
Also, use the more correct type of 'const char* const*' for the input strv.
This requires adding the cast in a few places, but also allows to remove some
casts in others.
2024-03-07 18:49:44 +01:00
Zbigniew Jędrzejewski-Szmek
4bf32eac52 udevd: inline iterator variable 2024-03-07 18:49:44 +01:00
Zbigniew Jędrzejewski-Szmek
5ea4afcf00 udev,backlight,kernel-install: reword sentences starting with "Skipping to"
That's not gramatically correct.

In backlight, change "assocation" to "deduplication". Without the context,
it's probably not clear at all that we "associate" them to ignore them.
2024-03-07 18:49:44 +01:00
Zbigniew Jędrzejewski-Szmek
6812498cb2 shared/pretty-print: rename output parameters 2024-03-07 18:49:44 +01:00
Zbigniew Jędrzejewski-Szmek
e5abff372d shared/conf-parser: collapse pkgdir and conf_file args into one
This essentially reverts 5656cdfeea. I find it
much easier to understand what is going on when the
path-relative-to-the-search-path is passed in full, instead of being constructed
from two parts, with one of the parts being implicit in some places.

Also, we call 'systemd-analyze cat-config <path>' with <path> with the same
meaning, so this makes the internal and external APIs more consistent.
2024-03-07 18:49:44 +01:00
Zbigniew Jędrzejewski-Szmek
76d75d8b7b constants: drop duplicated CONF_PATHS defines
Follow-up for b0d3095fd6.
2024-03-07 18:47:50 +01:00
Zbigniew Jędrzejewski-Szmek
8f43182847 various: use modern strv helpers
If we're building a strv, let's just use strv_new() with the CONF_PATHS macro,
which gives as an exploded string set.
2024-02-28 11:10:34 +01:00
hulkoba
eafadb91ce docs: show mkosi project on website 2024-02-21 13:08:08 +01:00
Luca Boccassi
2e904f58e6
Merge pull request #31426 from YHNdnzj/logind-minor-cleanup
logind: some cleanups
2024-02-21 11:35:34 +00:00
Martin Ivicic
ea932bd34d networkd: support setting dhcp server port 2024-02-21 19:33:27 +09:00
Susant Sahani
e5aa8c193d
network: DHCP6 Allow to export DHCP6 DUID (#31355)
We did not support the export of DHCP6 DUID. Let's add this. Some
applications may use it.
2024-02-21 19:32:27 +09:00
Antonio Alvarez Feijoo
68ad9e43f6 cryptsetup-tokens: fix typo in comments 2024-02-21 10:23:43 +00:00
Frantisek Sumsal
8f0dbbd758 homectl: make sure we sent the full 8 bytes as flags
Otherwise weird stuff happens on the other side:

[1217111.957263] testsuite-46.sh[61]: + homectl create test-user --disk-size=min --luks-discard=yes --image-path=/home/test-user.home --luks-pbkdf-type=pbkdf2 --luks-pbkdf-time-cost=1ms
[1217112.598219] homectl[66]: Operation on home test-user failed: Provided flags are unsupported (0ad2578000000000).

(taken from TEST-46-HOME run on armv7l)

Fixes issue mentioned in https://github.com/systemd/systemd/pull/31419#issuecomment-1955117397.
2024-02-21 10:14:51 +00:00
Mike Yuan
de53c661bc
logind-dbus: clean up manager_{start,stop,kill}_unit 2024-02-21 15:55:01 +08:00
Mike Yuan
783e816e81
logind-dbus: rearrange functions 2024-02-21 15:50:13 +08:00
Mike Yuan
d536e8b5e9
logind-session-dbus: drop unneeded unref_and_replace
If there's pending s->upgrade_message, we already return early
above.
2024-02-21 15:37:33 +08:00
Yu Watanabe
3c6d9d1c39
Merge pull request #31405 from yuwata/network-ndisc-reachable-time
network/ndisc: set neighbor reachable time
2024-02-21 14:29:01 +09:00
Mike Yuan
e404ca3eb7
Merge pull request #31419 from AdrianVovk/fixup-largefile-define
Fixup largefile define
2024-02-21 13:12:30 +08:00
Yu Watanabe
9e39d0a32a
Merge pull request #31408 from mrc0mmand/verify-unit-files-v2
test: verify our own units (where applicable)
2024-02-21 12:01:48 +09:00
Luca Boccassi
5605b7d61a
Merge pull request #31400 from poettering/askpw-rework
Password Asking rework
2024-02-20 23:45:52 +00:00
Adrian Vovk
e4d0606c2b
fd-util: Add helpers to check if FD flags are safe
Adds a SAFE_FD_FLAGS define to list out all the safe FD flags, and also
an UNSAFE_FD_FLAGS() macro to strip out the safe flags and leave only
the unsafe flags. This can be used to quickly check if any unsafe flags
are set and print them for diagnostic purposes
2024-02-20 15:01:37 -05:00
Adrian Vovk
9e3db91f2f
missing_fcntl: Fix RAW_O_LARGEFILE
This value is actually arch-specific, so this commit defines it for all
the arches that set it to some custom value

Fixes https://github.com/systemd/systemd/issues/31417
2024-02-20 15:01:36 -05:00
Zbigniew Jędrzejewski-Szmek
0615abef62 analyze: always recommend saving the output to a file
The command will refuse to write to a TTY, so give a strong hint
that redirecting to a file is recommended. This makes the synopsis,
man page text, and --help output consistent.

Also drop the space after the redirection operator everywhere.
2024-02-20 19:35:58 +00:00
Lennart Poettering
b2ac928088 cryptsetup: drop "headless" bool, make it a flag in AskPasswordFlags instead
This bool controls whether we should interactively ask for a password,
which is pretty much what the ask_password-api.c APIs are about. Hence,
just make the bool a flag in AskPasswordFlags enum, and use it
everywhere.

This still catches the flag early in upper levels of the codebase,
exactly as before, but if the flag is still present in the lower layers
it's also handled there and results in ENOEXEC if seen.

This is mostly an excercise in simplifying our ridiculously long
function call parameter lists a bit.
2024-02-20 16:50:04 +01:00
Lennart Poettering
732285eb8c man: tweak cryptsetup credentials docs a bit
Let's bring the credentials into a better order, in order of relevance.

Also, let's clarify what the generic LUKS PIN is about.

Finally, list the credentials in system-credentials(7) too, after all
people might want to unlock a disk with this via SMBIOS Type 11 or so.
2024-02-20 16:50:00 +01:00
Lennart Poettering
0fceb5539d man: now that the crdentials used by systemd-cryptenroll are in order, document them
Replaces: #31370
2024-02-20 16:50:00 +01:00
Lennart Poettering
1c12daa46f cryptsetup-pkcs11: also plug credential name to use to credential plugin 2024-02-20 16:50:00 +01:00
Lennart Poettering
b3a635841a cryptenroll,cryptsetup: clean up unlock credential for TPM2 + FIDO2
Let's make sure that when cryptenroll asks for the TPM2 or FIDO2 token
PIN it uses cryptenroll.* credential namespace, and cryptsetup uses
cryptsetup.*.
2024-02-20 16:50:00 +01:00
Lennart Poettering
a96c284f10 pkcs11-util: clean up credential handling for PKCS11 PIN
similar as the previous commit, let's clean up the credential name we
use. Use home.token-pin in case of homectl, and cryptenroll.pkcs11-pin
in case of cryptenroll.
2024-02-20 16:50:00 +01:00
Lennart Poettering
7252be6083 cryptenroll: use a different credential for new new PIN
The TPM2 enrollment is the only of the three token enrollments where the
user picks a PIN at enrollment time (the others have a PIN set for the
token, not for the enrollment). Let's make sure it uses a different
credential for retrieving this PIN, in order to make sure people can
programmatically change PINs via credentials (in which case they need to
supply both).
2024-02-20 16:50:00 +01:00
Lennart Poettering
251c71b62b libfido2: tweak credential to read fido2 PIN from
Querying a fido2 PIN via askpw for enrolling is currently used in two
places: cryptenroll and homectl. So far we sloppily used the same fixed
credential name "fido2-pin" in both cases. Let's tweak that and make the
credential name match the other credentials cryptenroll or home query,
i.e. using the cryptenroll.* and home.* namespaces.

This is particular done in light of #31370, which wants to make the
credential name public. We really should get the name in order before
making it public.
2024-02-20 16:50:00 +01:00
Lennart Poettering
09eed3bf8c pcrlock: normalize credential name for TPM2 PIN
Let's drop the "systemd-" prefix from the credential name. We do not
prefix credentials that way so far. Don't do so here either.

The name is not really API, it's not documented, hence change it now
where we still can.
2024-02-20 16:50:00 +01:00
Lennart Poettering
6278a8655f cryptenroll: use correct askpw id for pw request
The "id" is used in the askpw protocol to recognize password prompts, in
case a service is replying to them and needs some id. Previously we set
an incorrect id, the one of cryptsetup. Fix that.

(I guess the id is not used much, it comes from a time where we had no
credentials, and thus some people wanted to supply passphrases
programmatically rather interactively. The usecase is probably gone, but
we should still set some valid id I guess.)
2024-02-20 16:50:00 +01:00
Lennart Poettering
6b3a907764 dissect-image: use strv_free_erase() at one more place 2024-02-20 16:50:00 +01:00
Lennart Poettering
05569104bd cryptenroll: fix type confusion on acquire_tpm2_key() parameter 2024-02-20 16:50:00 +01:00
Lennart Poettering
d08fd4c314 ask-password: rework how we pass request meta info when asking passwords
Rather than adding more and more parameters to ask_password_auto(), let's
pass a structure of the fields that often are constant anyway.

This way, callers can fill in what they need, and we take the filled
structure which we can pass around internally as one.

This is in particular preparation for adding one more field in one of
the next commits.
2024-02-20 16:50:00 +01:00
Mike Yuan
8e94bb62a5 core/mount: if umount(8) fails but mount disappeared, assume success
Fixes #31337
2024-02-20 16:22:27 +01:00
Frantisek Sumsal
5083e42765 test: verify our own units (where applicable)
This is inspired by one of our internal tests that does pretty much the
same thing. However, it is slightly more convoluted than I'd like it to
be, since I really don't want to duplicate the list of our units in
another place, so we need to, somehow, pass the list from the meson file
to the test script. I originally envisioned this to be a part of the
unit test suite, but this doesn't work for unit files with absolute
paths to binaries, as we'd have to install the build first (maybe using
a chroot would work?).

It doesn't check man pages (since they might not be installed on the
test machine) and also skip recursive dependencies (as that would trip
over issues in files that are not under our direct control), but it
should still cover typos and such.

There are currently two units for which the check had to be disabled -
syslog.socket, as the corresponding syslog.service might not be
installed, and rc-local.service as that's a compat API and the necessary
/etc/rc.d/rc.local file may not (and most likely won't be) present.
2024-02-20 15:45:50 +01:00
Zmyeir
8a461c572b hwdb: Add support for MetawillBook01 to 60-sensor.hwdb
Add accel orientation quirk for the METAPHYUNI MetawillBook01 2-in-1 laptop
2024-02-20 15:10:47 +01:00
MrSmör
8b6cfbd2b8 boot: padding for default arrow at too long lines
If the default boot entry name doesnt leave enough space for the
indicator arrow, it overwrote the first two characters of the entry

Now every line will always have enough padding.
2024-02-20 14:36:52 +01:00
Frantisek Sumsal
3e7b1b5cb9 test: fix mixed indent 2024-02-20 13:31:00 +01:00
Frantisek Sumsal
a69ec6fb02 test: support TEST_MATCH_* stuff in TEST-23-UNIT-FILE as well
TEST-23 uses run_subtests_with_signals() which I forgot about when
introducing the change.

Follow-up for 0efa27bd4b.
2024-02-20 13:31:00 +01:00
Luca Boccassi
ce3fa3863d
Merge pull request #31388 from keszybz/bitfield-cleanup
Bitfield cleanup
2024-02-20 12:15:24 +00:00
Yu Watanabe
142f0e9517 analyze: skip to check ExecCommand for .mount and .swap units
They are not set by a unit file, but dynamically generated.

Fixes a bug caused by abf0ccc1c6.

Fixes #31396.
2024-02-20 11:59:10 +00:00
Zbigniew Jędrzejewski-Szmek
6169bb19a9 logind: drop bitfield annotations
As in other cases, this is simpler but better.

pahole:
-	/* size: 336, cachelines: 6, members: 50 */
-	/* sum members: 316, holes: 4, sum holes: 19 */
-	/* sum bitfield members: 4 bits, bit holes: 1, sum bit holes: 4 bits */
-	/* last cacheline: 16 bytes */
+	/* size: 328, cachelines: 6, members: 50 */
+	/* sum members: 320, holes: 3, sum holes: 8 */
+	/* last cacheline: 8 bytes */
2024-02-20 10:42:36 +01:00
Zbigniew Jędrzejewski-Szmek
d53017292e timesyncd: reorder structs instead of useless bitfields
Because of alignment, those bitfields were not doing anything useful,
and were causing the generated code to be more complicated. But in this
case, at least potentially there might be a number of copies of those
structs (if we have a bunch of time servers configured), so let's actually
implement the intended space savings by reording the fields to reduce the
size of holes.
2024-02-20 10:41:09 +01:00