Zbigniew Jędrzejewski-Szmek [Thu, 3 Jun 2021 17:40:01 +0000 (19:40 +0200)]
core: do not serialize mounts and automounts for switch-root
When e.g. tmp.mount is present in the initrd, and we serialize it, switch root,
and deserialize, the new systemd is confused because it thinks /tmp is mounted.
In general, it doesn't make sense to serialize anything that refers to paths in
the old root file system.
This fixes two errors for me:
1. tmp.mount was not mounted properly before local-fs.target. It would be
mounted as some point (I guess when we re-read /proc/self/mountinfo for some
other reason). In effect systemd-tmpfiles-setup.service would see one fs, and
some other units started later a different one. In particular gdm.service would
fail because the pre-created /tmp/.X11-unix with proper permissions would not
exist at time it was started.
2. # systemd[1]: proc-sys-fs-binfmt_misc.automount: Got hangup/error on autofs pipe from kernel. Likely our automount point has been unmounted by someone or something else?
# systemd[1]: proc-sys-fs-binfmt_misc.automount: Failed with result 'unmounted'.
# systemd[1]: Mounting proc-sys-fs-binfmt_misc.mount...
# systemd[1]: Mounted proc-sys-fs-binfmt_misc.mount.
# systemd[1]: Starting systemd-binfmt.service...
# systemd[1]: Finished systemd-binfmt.service.
# systemd[1]: proc-sys-fs-binfmt_misc.automount: Path /proc/sys/fs/binfmt_misc is already a mount point, refusing start.
# systemd[1]: Failed to set up automount proc-sys-fs-binfmt_misc.automount.
# systemd[1]: proc-sys-fs-binfmt_misc.automount: Path /proc/sys/fs/binfmt_misc is already a mount point, refusing start.
# systemd[1]: Failed to set up automount proc-sys-fs-binfmt_misc.automount.
# systemd[1]: proc-sys-fs-binfmt_misc.automount: Path /proc/sys/fs/binfmt_misc is already a mount point, refusing start.
# systemd[1]: Failed to set up automount proc-sys-fs-binfmt_misc.automount.
# systemd[1]: Stopping systemd-binfmt.service...
# systemd[1]: systemd-binfmt.service: Deactivated successfully.
# systemd[1]: Stopped systemd-binfmt.service.
I couldn't understand the error here, but in retrospect the first line is entirely
correct: "someone or something else" was the old systemd unmounting the old root.
Zbigniew Jędrzejewski-Szmek [Fri, 4 Jun 2021 12:46:59 +0000 (14:46 +0200)]
core: drop bitfields in VTable object
The usual: bitfields make sense as a memory-saving measure when we have many
objects of a given type. When the object appears at most in a few copies, the
overhead of additional code to access bitfields is more than the savings.
Zbigniew Jędrzejewski-Szmek [Thu, 3 Jun 2021 17:23:15 +0000 (19:23 +0200)]
core: update comment
unit_serialize_item() was dropped in
d68c645bd3323ae1f0dfcb8fd74ea6b19681db8a.
But "cannot be restored from other sources" is also not entirely true: for
example for mounts we may be able to figure out most state from /p/s/mountinfo.
So let's make the comment more oblique.
Zbigniew Jędrzejewski-Szmek [Fri, 4 Jun 2021 08:50:33 +0000 (10:50 +0200)]
docs/ARCHITECTURE: more markup and unicode
Zbigniew Jędrzejewski-Szmek [Fri, 4 Jun 2021 08:25:42 +0000 (10:25 +0200)]
NEWS: adjust grammar and other small changes
Yu Watanabe [Fri, 4 Jun 2021 04:51:41 +0000 (13:51 +0900)]
fix typo
Lennart Poettering [Fri, 4 Jun 2021 08:34:56 +0000 (10:34 +0200)]
docs: use uppercase letters in title
We usually do it that way, do so here, too.
Lennart Poettering [Fri, 4 Jun 2021 08:32:59 +0000 (10:32 +0200)]
more 249 NEWS work
Lennart Poettering [Thu, 3 Jun 2021 21:36:28 +0000 (23:36 +0200)]
NEWS: more preparation for v249
Luca Boccassi [Thu, 3 Jun 2021 14:37:17 +0000 (15:37 +0100)]
docs: add ARCHITECTURE.md with code map
Initial and coarse version of a code map, useful for people getting
started and looking at the repository for the first time.
adrian5 [Thu, 3 Jun 2021 19:05:20 +0000 (21:05 +0200)]
man: fix typo
Lennart Poettering [Thu, 3 Jun 2021 16:08:07 +0000 (18:08 +0200)]
Merge pull request #19801 from poettering/device-unit-name-length
pid1: reduce amount of warnings about sysfs device paths we cannot convert into device unit names
Lennart Poettering [Thu, 3 Jun 2021 15:57:23 +0000 (17:57 +0200)]
NEWS: start putting together NEWS for v249
Lennart Poettering [Thu, 3 Jun 2021 14:09:43 +0000 (16:09 +0200)]
Merge pull request #19806 from poettering/ask-pw-asterisk
systemd-ask-password: make pw echo fully configurable
Lennart Poettering [Wed, 2 Jun 2021 13:49:10 +0000 (15:49 +0200)]
pid1: don't choke on overly long device paths
This mimics what we do for device units: if there's a device we cannot
synthesize a good swap unit name for, then proceed without failure.
Lennart Poettering [Wed, 2 Jun 2021 13:48:14 +0000 (15:48 +0200)]
pid1: make swap_process_new() void
This matches device_process_new(): this function should not fail, since
it just reacts to external events.
Lennart Poettering [Wed, 2 Jun 2021 13:34:34 +0000 (15:34 +0200)]
pid1: downgrade if we can't make sense of the old device on MOVE uevent
If the name of the old device didn#t work for us, we don't have to clean
anything up, since we know for sure that there won't be a device unit
for it. hence downgrade log message about it.
Lennart Poettering [Wed, 2 Jun 2021 13:34:03 +0000 (15:34 +0200)]
pid1: eat up errors in device_update_found_by_name()
We eat up all errors in the caller already, and rightly so.
Lennart Poettering [Wed, 2 Jun 2021 13:31:50 +0000 (15:31 +0200)]
pid1: properly propagate errors from device_setup_unit()
We want to propagate errors here, since we want to make dependent on the
success of creating the main device unit the creation of the auxiliary
device units. Thus if we suppress errors here we might end up in exotic
corner cases in a situation were we create the auxiliary ("following")
device units without the primary one.
Lennart Poettering [Wed, 2 Jun 2021 13:29:29 +0000 (15:29 +0200)]
pid1: reduce log noise generated by devices with overly long sysfs paths
This basically does what
2c905207db37c691d4abef868165ad5ea2dd0f4f did
for mount units
Fixes: #16161
Lennart Poettering [Wed, 2 Jun 2021 08:36:53 +0000 (10:36 +0200)]
pid1: make return value of device_remove_old() void too
Lennart Poettering [Wed, 2 Jun 2021 08:35:23 +0000 (10:35 +0200)]
pid1: shorten code a bit
Lennart Poettering [Wed, 2 Jun 2021 08:31:41 +0000 (10:31 +0200)]
pid1: make device_process_new() return void
We never use the return value, and we really shouldn't, hence let's drop
it.
Lennart Poettering [Thu, 3 Jun 2021 12:11:59 +0000 (14:11 +0200)]
Merge pull request #19800 from poettering/podman-test
make our testsuite pass in a podman container with default privs
Lennart Poettering [Wed, 2 Jun 2021 20:11:34 +0000 (22:11 +0200)]
test: add a 'static' on a global variable we don't actually export
All global but not exported variables should be "static" in our
codebase, add "static" to one more such variable hence.
Lennart Poettering [Wed, 2 Jun 2021 20:10:22 +0000 (22:10 +0200)]
test: tweak privilege tests for two more tests
These tests require properly privileged root users, hence skip things
when we don't have CAP_SYS_ADMIN.
Fixes: #19746
Lennart Poettering [Wed, 2 Jun 2021 19:38:44 +0000 (21:38 +0200)]
test-seccomp: tighten privilege check before seccomp()
geteuid() without CAP_SYS_ADMIN is not enough to do unrestricted
seccomp(). Hence tighten the check.
See: #19746
Lennart Poettering [Wed, 2 Jun 2021 13:50:16 +0000 (15:50 +0200)]
test-capability: skip tests that need CAP_NET_RAW if cap is not passed
See: #19746
Lennart Poettering [Thu, 3 Jun 2021 09:08:20 +0000 (11:08 +0200)]
ask-password: once we hit the message argument, don't process switches anymore
Let's not mangle the message part unnecessarily, that'd be confusing and
unexpected.
Lennart Poettering [Thu, 3 Jun 2021 08:42:55 +0000 (10:42 +0200)]
ask-password: default to a different prompt than "Password:" if the echo is on
Lennart Poettering [Thu, 3 Jun 2021 08:41:05 +0000 (10:41 +0200)]
ask-password: make password echo fully configurable
This adds --visible=yes|no|asterisk which allow controlling the echo of
the password prompt in detail. The existing --echo switch is then made
an alias for --visible=yes (and a shortcut -e added for it too).
Yu Watanabe [Wed, 2 Jun 2021 20:55:05 +0000 (05:55 +0900)]
efi: drop glibc header and use pre-defined macros
This reverts
72dc626b3d6905b105ae61ca2c60f51a6f74070e and replace glibc
specific macros with compiler's pre-defined macros.
Yu Watanabe [Wed, 2 Jun 2021 07:29:59 +0000 (16:29 +0900)]
sd-device: do not use ::subsystem member directly
The value is set dynamically when sd_device_get_subsystem() is called
first time.
Fixes the following issue:
```
$ build/udevadm test /sys/class/block/dm-1
...
Assertion '_subsystem' failed at src/libsystemd/sd-device/sd-device.c:767, function device_set_subsystem(). Aborting.
Program received signal SIGABRT, Aborted.
```
Yu Watanabe [Wed, 2 Jun 2021 18:37:33 +0000 (03:37 +0900)]
Merge pull request #19798 from bluca/todo_landlock
Add new item to TODO list
Yu Watanabe [Wed, 2 Jun 2021 18:36:28 +0000 (03:36 +0900)]
Merge pull request #19792 from keszybz/more-logging-stuff
More logging tweaks
Luca Boccassi [Wed, 2 Jun 2021 18:13:05 +0000 (19:13 +0100)]
TODO: mention the new Landlock LSM as a way to implement sandboxing for systemd --user
Luca Boccassi [Wed, 2 Jun 2021 17:57:31 +0000 (18:57 +0100)]
TODO: remove some features that have been implemented
Yu Watanabe [Wed, 2 Jun 2021 16:32:29 +0000 (01:32 +0900)]
Merge pull request #19791 from yuwata/udev-node-logs
udev: update several log messages
scootergrisen [Wed, 2 Jun 2021 16:03:12 +0000 (18:03 +0200)]
po: Translated using Weblate (Danish)
Currently translated at 100.0% (189 of 189 strings)
Co-authored-by: scootergrisen <scootergrisen@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/master/da/
Translation: systemd/main
Luca Boccassi [Wed, 2 Jun 2021 16:02:57 +0000 (17:02 +0100)]
Merge pull request #19783 from yuwata/efi-build-options
efi: constify several functions and enable more warnings
Zbigniew Jędrzejewski-Szmek [Tue, 1 Jun 2021 15:40:51 +0000 (17:40 +0200)]
various: don't say that the timestamp 'changed' on initial load
I always found this a bit annoying.
With the patch:
$ SYSTEMD_LOG_LEVEL=debug build/udevadm test /sys/class/block/dm-1
...
Loaded timestamp for '/etc/systemd/network'.
Loaded timestamp for '/usr/lib/systemd/network'.
Parsed configuration file /usr/lib/systemd/network/99-default.link
Parsed configuration file /etc/systemd/network/10-eth0.link
Created link configuration context.
Loaded timestamp for '/etc/udev/rules.d'.
Loaded timestamp for '/usr/lib/udev/rules.d'.
...
Yu Watanabe [Wed, 2 Jun 2021 10:26:29 +0000 (19:26 +0900)]
udev: upgrade log level about failure in updating devlinks
Yu Watanabe [Wed, 2 Jun 2021 10:25:53 +0000 (19:25 +0900)]
udev: check that passed symbolic link path starts with /dev
Luca Boccassi [Wed, 2 Jun 2021 10:32:52 +0000 (11:32 +0100)]
Merge pull request #19779 from poettering/unit-name-length-tweak
improve logging when encountering mount points we cannot convert to unit names due to length
Yu Watanabe [Wed, 2 Jun 2021 10:14:12 +0000 (19:14 +0900)]
udev: explicitly mention that the error will be ignored
See #19788.
Yu Watanabe [Wed, 2 Jun 2021 10:10:49 +0000 (19:10 +0900)]
udev: ignore the case that the device is already removed
See #19788.
Yu Watanabe [Wed, 2 Jun 2021 07:37:19 +0000 (16:37 +0900)]
cryptsetup: fix typo
Zbigniew Jędrzejewski-Szmek [Tue, 1 Jun 2021 14:46:53 +0000 (16:46 +0200)]
core: show manager version in dump
This makes it easier to not get lost which one is which when
comparing two dumps.
Zbigniew Jędrzejewski-Szmek [Tue, 1 Jun 2021 13:25:44 +0000 (15:25 +0200)]
core: split out core/manager-dump.[ch]
This is a fairly specialized topic, let's create a separate file for it.
Zbigniew Jędrzejewski-Szmek [Tue, 1 Jun 2021 10:56:33 +0000 (12:56 +0200)]
TODO: add entry about alias logging
Zbigniew Jędrzejewski-Szmek [Tue, 1 Jun 2021 08:00:01 +0000 (10:00 +0200)]
varlink: remove duplicated "varlink:" prefix
We had:
systemd[1]: varlink-36: New incoming message: {"method":"io.systemd.UserDatabase.GetMemberships","parameters":{"userName":"gdm","service":"io.systemd.DynamicUser"},"more":true}
systemd[1]: varlink-36: varlink: changing state idle-server → processing-method-more
systemd[1]: varlink-36: Sending message: {"error":"io.systemd.UserDatabase.NoRecordFound","parameters":{}}
systemd[1]: varlink-36: varlink: changing state processing-method-more → processed-method
systemd[1]: varlink-36: varlink: changing state processed-method → idle-server
systemd[1]: varlink-36: Got POLLHUP from socket.
systemd[1]: varlink-36: varlink: changing state idle-server → pending-disconnect
systemd[1]: varlink-36: varlink: changing state pending-disconnect → processing-disconnect
systemd[1]: varlink-36: varlink: changing state processing-disconnect → disconnected
So let's drop the "varlink:" prefix and use capitalized sentences like in other messages.
Zbigniew Jędrzejewski-Szmek [Tue, 1 Jun 2021 07:55:09 +0000 (09:55 +0200)]
varlink: say "varlink:" instead of "n/a:" when no description is available
For new connections, we log something like this:
systemd[1]: n/a: New incoming connection.
systemd[1]: n/a: Connections of user 997: 0 (of 1024 max)
systemd[1]: varlink-22: varlink: setting state idle-server
systemd[1]: varlink-22: New incoming message: ...
This "n/a" is not very pretty, and without context it would be hard to even
figure out this is a varlink connection.
Yu Watanabe [Wed, 2 Jun 2021 06:53:29 +0000 (15:53 +0900)]
meson: sort compiler flags
Yu Watanabe [Wed, 2 Jun 2021 06:49:44 +0000 (15:49 +0900)]
meson: enable more warnings when building efi binary
Yu Watanabe [Wed, 2 Jun 2021 06:45:47 +0000 (15:45 +0900)]
efi: constify several arguments of functions which handle loader entries
Yu Watanabe [Wed, 2 Jun 2021 06:43:21 +0000 (15:43 +0900)]
efi: drop const qualifiers from arguments in uefi_call_wrapper()
Yu Watanabe [Wed, 2 Jun 2021 06:41:39 +0000 (15:41 +0900)]
efi: add const qualifier to EFI variable handling functions
Yu Watanabe [Wed, 2 Jun 2021 06:40:56 +0000 (15:40 +0900)]
efi: add const qualifier to string utils
Yu Watanabe [Wed, 2 Jun 2021 06:38:29 +0000 (15:38 +0900)]
efi: include endian.h to handle endian correctly
The macro __BYTE_ORDER__ is defined in endian.h.
Yu Watanabe [Wed, 2 Jun 2021 06:36:26 +0000 (15:36 +0900)]
efi: do not use _STRING_ARCH_unaligned macro
It is already removed from glibc. See,
https://sourceware.org/git/?p=glibc.git;a=commit;h=
16396c41deab45f715ffd813280d9d685b3b281e
https://sourceware.org/git/?p=glibc.git;a=commit;h=
09a596cc2cf4e0f9f8e9f3bba4b1a97efcb13bcb
Yu Watanabe [Tue, 1 Jun 2021 08:58:56 +0000 (17:58 +0900)]
string-util: trivial optimizations for strverscmp_improved()
Lennart Poettering [Tue, 1 Jun 2021 20:26:49 +0000 (22:26 +0200)]
mount: be more descriptive when logging about overly long mount point paths
This is prompted by #17684: let's very explicitly say that the name is
too long for us, and that we'll ignore it.
Lennart Poettering [Tue, 1 Jun 2021 20:20:55 +0000 (22:20 +0200)]
core: when looping over mount/swap names, continue if we find one which doesn't translate to a valid unit name
Lennart Poettering [Tue, 1 Jun 2021 17:43:55 +0000 (19:43 +0200)]
unit-name: generate a clear error code when converting an overly long fs path to a unit name
Lennart Poettering [Tue, 1 Jun 2021 15:17:37 +0000 (17:17 +0200)]
dissect: if dissecting without udev, don't look for usec timestamp on db record
There will likely be none, hence don't bother.
This fixes an issue in systemd-gpt-auto-generator where we'll try to
wait for the udev db for the partitions even though though udev might
simplynot be around and via the DISSECT_IMAGE_NO_UDEV flag were
explicitly told not to bother.
Fixes: #19377
Zbigniew Jędrzejewski-Szmek [Tue, 1 Jun 2021 14:17:16 +0000 (16:17 +0200)]
pam: do not require a non-expired password for user@.service
Without this parameter, we would allow user@ to start if the user
has no password (i.e. the password is "locked"). But when the user does have a password,
and it is marked as expired, we would refuse to start the service.
There are other authentication mechanisms and we should not tie this service to
the password state.
The documented way to disable an *account* is to call 'chage -E0'. With a disabled
account, user@.service will still refuse to start:
systemd[16598]: PAM failed: User account has expired
systemd[16598]: PAM failed: User account has expired
systemd[16598]: user@1005.service: Failed to set up PAM session: Operation not permitted
systemd[16598]: user@1005.service: Failed at step PAM spawning /usr/lib/systemd/systemd: Operation not permitted
systemd[1]: user@1005.service: Main process exited, code=exited, status=224/PAM
systemd[1]: user@1005.service: Failed with result 'exit-code'.
systemd[1]: Failed to start user@1005.service.
systemd[1]: Stopping user-runtime-dir@1005.service...
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=
1961746.
Lennart Poettering [Tue, 1 Jun 2021 17:27:06 +0000 (19:27 +0200)]
Merge pull request #19774 from poettering/tpm2-tweaks
cryptsetup: two minor tpm2 tweaks
Lennart Poettering [Tue, 1 Jun 2021 14:46:40 +0000 (16:46 +0200)]
logind-dbus: correctly calculate when to create /etc/nologin file in all cases
Fixes: #19258
Lennart Poettering [Tue, 1 Jun 2021 14:17:24 +0000 (16:17 +0200)]
cryptsetup: add missing error branch
Found in the process of trying to figure out #19193, but I doubt it's
going to fix that.
Lennart Poettering [Tue, 1 Jun 2021 14:35:13 +0000 (16:35 +0200)]
cryptsetup: don't bother waiting for TPM2 devices if we are on EFI and EFI says there is no TPM2 device
Note that this means EFI-systems with a manually added TPM device won't
be supported automatically, but given that the TPM2 trust model kinda
requires firmware support I doubt it matters supporting this. And in all
other cases it speeds things up a bit.
Lennart Poettering [Tue, 1 Jun 2021 14:34:34 +0000 (16:34 +0200)]
cryptsetup: if TPM2 support is not compiled in, fallback to non-TPM2 mode gracefully
Fixes: #19177
Lennart Poettering [Tue, 1 Jun 2021 13:53:36 +0000 (15:53 +0200)]
Merge pull request #19768 from poettering/homectl-fido2-lock-with
homed: catch up with FIDO2 features in cryptsetup + other fixes
Ondrej Kozina [Thu, 27 May 2021 06:43:18 +0000 (08:43 +0200)]
cryptsetup-util: disable pbkdf benchmark in cryptsetup_set_minimal_pbkdf.
No need to benchmark pbkdf when asking for minimal values
anyway.
1000 iterations count is minimum for both LUKS1 and LUKS2
pbkdf2 keyslot parameters according to NIST SP 800-132, ch. 5.2.
Iterations count can not be lower than recommended minimum
when benchmark is disabled. The time_ms member is ignored with
benchmark disabled.
Lennart Poettering [Tue, 1 Jun 2021 11:19:23 +0000 (13:19 +0200)]
dissect: the libcryptsetup code for Verity crypt_device objects too
Across the codebase we are pretty good at setting the per-crypt_device
log functions once we allocated the object. But we forgot one case. Fix
that.
Lennart Poettering [Tue, 1 Jun 2021 11:16:47 +0000 (13:16 +0200)]
cryptsetup: explicitl set default log functions wherever needed
Code using libcryptsetup already sets the global log function if it uses
dlopen_cryptsetup(). Make sure we do the same for the three programs
that explicitly link against libcryptsetup and hence to not use
dlopen_cryptsetup().
Lennart Poettering [Tue, 1 Jun 2021 11:11:48 +0000 (13:11 +0200)]
cryptsetup: implicitly set global log functions when loading libcryptsetup dynamically
So far we only set the per-crypt_device log functions, but some
libcryptsetup calls we invoke without a crypt_device objects, and we
want those to redirect to our infra too.
Lennart Poettering [Mon, 31 May 2021 20:55:08 +0000 (22:55 +0200)]
homework: only default to LUKS storage if libcryptsetup is installed
Lennart Poettering [Mon, 31 May 2021 20:50:44 +0000 (22:50 +0200)]
homework: make libcryptsetup dep runtime optional
Lennart Poettering [Mon, 31 May 2021 20:15:48 +0000 (22:15 +0200)]
homework: fix return codes when using fido2/pkcs11 cached passwords
Otherwise we'll accidently report a record we can safely decrypt as not
decrypted.
Lennart Poettering [Mon, 31 May 2021 19:55:44 +0000 (21:55 +0200)]
userdb: make most loading of JSON user record data "permissive"
We want user records to be extensible, hence we shouldn't complain about
fields we can't parse. In particular we want them to be extensible for
our own future extensions.
Some code already turned the permissive flag when parsing the JSON data,
but most did not. Fix that. A few select cases remain where the bit is
not set: where we just gnerated the JSON data ourselves, and thus can be
reasonably sure that if we can't parse it it's our immediate programming
error and not just us processing a user record from some other tool or a
newer version of ourselves.
Lennart Poettering [Fri, 28 May 2021 16:18:54 +0000 (18:18 +0200)]
homectl: store FIDO2 up/uv/clientPin fields in user records too
This catches up homed's FIDO2 support with cryptsetup's: we'll now store
the uv/up/clientPin configuration at enrollment in the user record JSON
data, and use it when authenticating with it.
This also adds explicit "uv" support: we'll only allow it to happen when
the client explicity said it's OK. This is then used by clients to print
a nice message suggesting "uv" has to take place before retrying
allowing it this time. This is modelled after the existing handling for
"up".
Lennart Poettering [Tue, 1 Jun 2021 09:44:00 +0000 (11:44 +0200)]
Merge pull request #17096 from eworm-de/ask-password
ask-password: allow to control emoji
Yu Watanabe [Tue, 1 Jun 2021 02:14:45 +0000 (11:14 +0900)]
Merge pull request #19766 from keszybz/fuzz-fixes
Fuzz fixes
Lennart Poettering [Mon, 31 May 2021 20:56:02 +0000 (22:56 +0200)]
udevadm: output trigger UUID in UUID format, instead of ID128
The SYNTH_UUID property also shows it in UUID format, and so does the
kernel and its docs otherwise, hence accept our fate and also output it
in UUID.
Luca Boccassi [Mon, 31 May 2021 21:59:51 +0000 (22:59 +0100)]
Merge pull request #19765 from keszybz/early-boot-logging-improvements
Early boot logging improvements
Christian Hesse [Thu, 27 May 2021 10:26:36 +0000 (12:26 +0200)]
ask-password: use FLAGS_SET()
Check for flags with FLAGS_SET() where possible.
Christian Hesse [Wed, 26 May 2021 20:38:30 +0000 (22:38 +0200)]
ask-password: allow to control lock and key emoji
Giving --echo to systemd-ask-password allows to echo the user input.
There's nothing secret, so do not show a lock and key emoji by default.
The behavior can be controlled with --emoji=yes|no|auto. The default is
auto, which defaults to yes, unless --echo is given.
Zbigniew Jędrzejewski-Szmek [Mon, 31 May 2021 10:05:29 +0000 (12:05 +0200)]
fuzz-journal-remote: print some kinds of errors
In https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=34803, we fail with:
Assertion 'IN_SET(r, -ENOMEM, -EMFILE, -ENFILE)' failed at src/journal-remote/fuzz-journal-remote.c:69,
function int LLVMFuzzerTestOneInput(const uint8_t *, size_t)(). Aborting.
AddressSanitizer:DEADLYSIGNAL
Let's try to print the error, so maybe we can see what is going on.
With the previous commit we shouldn't print out anything.
Zbigniew Jędrzejewski-Szmek [Mon, 31 May 2021 10:11:48 +0000 (12:11 +0200)]
journal-remote: downgrade messages about input data to warnings
Those are unexpected, so a user-visible message seems appropriate.
But they are not our errors, and to some extent we can recover from
them, so "warning" seems more appropriate than "error".
Zbigniew Jędrzejewski-Szmek [Mon, 31 May 2021 09:23:20 +0000 (11:23 +0200)]
systemctl: unset const char* arguments in static destructors
When fuzzing, the following happens:
- we parse 'data' and produce an argv array,
- one of the items in argv is assigned to arg_host,
- the argv array is subsequently freed by strv_freep(), and arg_host has a dangling symlink.
In normal use, argv is static, so arg_host can never become a dangling pointer.
In fuzz-systemctl-parse-argv, if we repeatedly parse the same array, we
have some dangling pointers while we're in the middle of parsing. If we parse
the same array a second time, at the end all the dangling pointers will have been
replaced again. But for a short time, if parsing one of the arguments uses another
argument, we would use a dangling pointer.
Such a case occurs when we have --host=… --boot-loader-entry=help. The latter calls
acquire_bus() which uses arg_host.
I'm not particularly happy with making the code more complicated just for
fuzzing, but I think it's better to resolve this, even if the issue cannot
occur in normal invocations, than to deal with fuzzer reports.
Should fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31714.
Zbigniew Jędrzejewski-Szmek [Sun, 23 May 2021 07:20:47 +0000 (09:20 +0200)]
pid1: remove dot from initial announcement
This line is so long, that the end is usually not visible on
the terminal. The dot looks out of place, and dropping it saves one
column for more interesting content.
Zbigniew Jędrzejewski-Szmek [Sun, 23 May 2021 08:06:38 +0000 (10:06 +0200)]
tty-ask-password-agent: log when starting a query on the console
When looking at logs from a boot with an encrypted device, I see
(with unrelevant messages snipped):
[ 2.751692] systemd[1]: Started Dispatch Password Requests to Console.
[ 7.929199] systemd-cryptsetup[258]: Set cipher aes, mode xts-plain64, key size 512 bits for device /dev/disk/by-uuid/
2d9b648a-15b1-4204-988b-
ec085089f8ce.
[ 9.499483] systemd[1]: Finished Cryptography Setup for luks-
2d9b648a-15b1-4204-988b-
ec085089f8ce.
There is a hug gap in timing without any explanatory message. If I didn't type
in the password, there would be no way to figure out why things blocked from
this log, so let's log something to the log too.
Zbigniew Jędrzejewski-Szmek [Sun, 23 May 2021 07:54:41 +0000 (09:54 +0200)]
tty-ask-password-agent: highlight summary in help
Zbigniew Jędrzejewski-Szmek [Sun, 23 May 2021 07:52:56 +0000 (09:52 +0200)]
tty-ask-password-agent: mention optional argument in help
0cf84693877f060254f04cf38120f52c2aa3059c added --console.
6af621248f2255f9ce50b0bafdde475305dc4e57 added an optional argument, but didn't
update the help texts.
Note that there is no ambiguity with the optional argument because no positional
arguments are allowed.
Sebastian Blunt [Sun, 30 May 2021 20:23:01 +0000 (13:23 -0700)]
Respect option 'silent' on cryptsetup FIDO2 pin entry
Makes the silent flags behavior consistent between regular password
entry and FIDO2 pin entry.
Zbigniew Jędrzejewski-Szmek [Mon, 31 May 2021 09:12:16 +0000 (11:12 +0200)]
systemctl: put static destructor in the order of variables
Yu Watanabe [Sat, 29 May 2021 04:42:48 +0000 (13:42 +0900)]
Merge pull request #19759 from poettering/emoji-token-text
fido2: add emoji to log message whenever "up" or "uv" is requested
Lennart Poettering [Fri, 28 May 2021 20:46:48 +0000 (22:46 +0200)]
cryptenroll: remove a tiny bit of whitespace
Lennart Poettering [Fri, 28 May 2021 16:38:42 +0000 (18:38 +0200)]
fido2: add emoji to log message whenever "up" or "uv" is requested
Let's show the touch emoji whenever the user is likely going to have to
interact with the security token. We had this at many but not all such
messages. Let's add it everywhere.
Also, upgrade all messages where the user is supposed to do something to
LOG_NOTICE. Previously some where at LOG_NOTICE and others at LOG_INFO.
These messages are more than informational after all, they require user
action, hence deserve the higher prio, in particular as that formats
them bold with our usual log coloring.
Always use the word "test" in log messages, instead of "check".
Finally, always use the same wording: "confirm presence on security
token" for "up" and "verify user on security token" for "uv"
Lennart Poettering [Fri, 28 May 2021 16:20:15 +0000 (18:20 +0200)]
Merge pull request #19756 from poettering/fido2-enroll-tweaks
further tweaks to fido2 code