1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-03 01:17:45 +03:00
Commit Graph

61051 Commits

Author SHA1 Message Date
Lennart Poettering
6e32414a66 resolved: when configuring 127.0.0.1 as per-interface DNS server, contact it via "lo" always
ussually if you specify a DNS server on some interface then we'll use
that interface to talk to it. Let's override this for localhost
addresses, as they only really make sense on "lo".

Fixes: #25397
2022-11-18 16:54:46 +01:00
Lennart Poettering
5faaed5b62 resolved: use right conditionalization when setting unicast ifindex on UDP sockets 2022-11-18 16:53:31 +01:00
Sam James
b9e7f22c2d nspawn: allow sched_rr_get_interval_time64 through seccomp filter
We only allow a selected subset of syscalls from nspawn containers
and don't list any time64 variants (needed for 32-bit arches when
built using TIME_BITS=64, which is relatively new).

We allow sched_rr_get_interval which cpython's test suite makes
use of, but we don't allow sched_rr_get_interval_time64.

The test failures when run in an arm32 nspawn container on an arm64 host
were as follows:
```
======================================================================
ERROR: test_sched_rr_get_interval (test.test_posix.PosixTester.test_sched_rr_get_interval)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/var/tmp/portage/dev-lang/python-3.11.0_p1/work/Python-3.11.0/Lib/test/test_posix.py", line 1180, in test_sched_rr_get_interval
    interval = posix.sched_rr_get_interval(0)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 1] Operation not permitted
```

Then strace showed:
```
sched_rr_get_interval_time64(0, 0xffbbd4a0) = -1 EPERM (Operation not permitted)
```

This appears to be the only time64 syscall that isn't already included one of
the sets listed in nspawn-seccomp.c that has a non-time64 variant. Checked
over each of the time64 syscalls known to systemd and verified that none
of the others had a non-time64-variant whitelisted in nspawn other than
sched_rr_get_interval.

Bug: https://bugs.gentoo.org/880131
2022-11-18 16:32:17 +01:00
reuben olinsky
f8a7112c47 sysupdate: Support volatile-root for finding the root partition
The existing logic can't find the root device in scenarios where
the root has been replaced with an overlay. We support looking
at "/run/systemd/volatile-root" to find the original root, similar
to what systemd-repart and gpt-auto-generator do.
2022-11-18 16:31:22 +01:00
Lennart Poettering
d995ccd7b5 update TODO 2022-11-18 14:58:30 +01:00
Lennart Poettering
eb2a610210
Merge pull request #25410 from DaanDeMeyer/mkfs-xfs-fixes
Followups for #25400
2022-11-18 14:45:48 +01:00
Li kunyu
fc0cc6db1e boot/measure: fix oom check 2022-11-18 21:02:03 +09:00
Li kunyu
f54f6d88b1
fuzz: fuzz-compress: fix copy-and-paste error: buf -> buf2 (#25431) 2022-11-18 15:03:41 +09:00
Luca Boccassi
daefca4611
Merge pull request #25414 from zx2c4-forks/krngseed
EFI random seed post #25319 review fixups
2022-11-17 19:49:40 +01:00
Daan De Meyer
0ae03a0fe7 kmod-setup: Make sure the tpm module is available early
Required for early boot services such as systemd-pcrphase-sysinit
which need early access to the tpm.
2022-11-17 18:17:44 +01:00
Jason A. Donenfeld
1d679b208d Update NEWS and TODO with sd-boot random seed developments 2022-11-17 18:15:04 +01:00
Lennart Poettering
fa4c01933d
Merge pull request #25333 from yuwata/find-esp-part-entry-scheme
find-esp: downgrade and ignore error on retrieving PART_ENTRY_SCHEME
2022-11-17 15:28:54 +01:00
Lennart Poettering
128a11ea99 signal-util: add common implementation for propagating a signal
i.e. let's add a common logic to be called from a signal handler to
raise the passed signal again.

Follow-up for: #25399
2022-11-17 22:38:14 +09:00
Edson Juliano Drosdeck
58dad4d5e5
hwdb: fix Compaq N14KP6 key toggle touchpad (#25404) 2022-11-17 22:37:08 +09:00
Daan De Meyer
f9fbac8b1f log: Remove log_ratelimit_debug() macros
These don't make sense anymore since we disable log ratelimiting
when logging at debug level.
2022-11-17 22:16:18 +09:00
Daan De Meyer
0b75744d5c repart: Write temporary LUKS header to /var/tmp instead of /tmp
This is a relatively large file so let's not create it in memory.
2022-11-17 14:15:28 +01:00
Daan De Meyer
48ac1fd132 Followups for aa6aa81c1e 2022-11-17 14:14:45 +01:00
Daan De Meyer
dd3c825294 tmpfile-util: Introduce fopen_temporary_child()
Instead of having fopen_temporary() create the file either next
to an existing file or in tmp/, let's split this up clearly into
two different functions, one for creating temporary files next to
existing files, and one for creating a temporary file in a directory.
2022-11-17 14:14:31 +01:00
Jason A. Donenfeld
1a2b1e10bd boot: only use __builtin_object_size with -O>0
__builtin_object_size() returns -1 with -O0, so disable this and warn
about it instead.
2022-11-17 12:23:17 +01:00
Jason A. Donenfeld
5d29d07b34 boot: do not truncate random seed file
There are concerns about the FAT file system driver exploding if we try
to do this, so just leave the bytes zeroed out instead.
2022-11-17 12:22:32 +01:00
Jason A. Donenfeld
3daeef0884 random-seed: handle post-merge review nits
These are various misc things that came up after merging.
2022-11-17 12:22:27 +01:00
Marcus Schäfer
305dd91adf Handle MACHINE_ID=uninitialized
systemd supports /etc/machine-id to be set to: uninitialized
In this case the expectation is that systemd creates a new
machine ID and replaces the value 'uninitialized' with the
effective machine id. In the scope of kernel-install we
should also enforce the creation of a new machine id in this
condition
2022-11-17 07:45:25 +09:00
Lennart Poettering
6337be0a4e pcrphase: add $SYSTEMD_PCRPHASE_STUB_VERIFY env var for overriding stub check 2022-11-17 07:44:11 +09:00
Vitaly Kuznetsov
155c51293d shared/tpm2-util: Fix "Error: Esys invalid ESAPI handle (40000001)" warning
systemd-cryptenroll complains (but succeeds!) upon binding to a signed PCR
policy:

$ systemd-cryptenroll --unlock-key-file=/tmp/passphrase --tpm2-device=auto
  --tpm2-public-key=... --tpm2-signature=..." /tmp/tmp.img

ERROR:esys:src/tss2-esys/esys_iutil.c:394:iesys_handle_to_tpm_handle() Error: Esys invalid ESAPI handle (40000001).
WARNING:esys:src/tss2-esys/esys_iutil.c:415:iesys_is_platform_handle() Convert handle from TPM2_RH to ESYS_TR, got: 0x40000001
ERROR:esys:src/tss2-esys/esys_iutil.c:394:iesys_handle_to_tpm_handle() Error: Esys invalid ESAPI handle (40000001).
WARNING:esys:src/tss2-esys/esys_iutil.c:415:iesys_is_platform_handle() Convert handle from TPM2_RH to ESYS_TR, got: 0x4000000
New TPM2 token enrolled as key slot 1.

The problem seems to be that Esys_LoadExternal() function from tpm2-tss
expects a 'ESYS_TR_RH*' constant specifying the requested hierarchy and not
a 'TPM2_RH_*' one (see Esys_LoadExternal() -> Esys_LoadExternal_Async() ->
iesys_handle_to_tpm_handle() call chain).

It all works because Esys_LoadExternal_Async() falls back to using the
supplied values when iesys_handle_to_tpm_handle() fails:

    r = iesys_handle_to_tpm_handle(hierarchy, &tpm_hierarchy);
    if (r != TSS2_RC_SUCCESS) {
        ...
        tpm_hierarchy = hierarchy;
    }

Note, TPM2_RH_OWNER was used on purpose to support older tpm2-tss versions
(pre https://github.com/tpm2-software/tpm2-tss/pull/1531), use meson magic
to preserve compatibility.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
2022-11-16 21:45:57 +01:00
Lennart Poettering
c204cfb2e8
Merge pull request #25399 from DaanDeMeyer/siginfo-crash
crash-handler: Make sure we propagate the original siginfo
2022-11-16 18:42:07 +01:00
Daan De Meyer
ffa8d1ba39
Merge pull request #25096 from DaanDeMeyer/journald-log-fixes
journal: Ratelimit more journald log messages
2022-11-16 16:40:00 +01:00
Daan De Meyer
2af3e23fc0 crash-handler: Make sure we propagate the original siginfo
If we call raise(), we lose the information from the original signal.
If we use rt_sigqueueinfo(), the original siginfo gets reused which
is helpful when debugging crashes.
2022-11-16 16:07:35 +01:00
Daan De Meyer
a0f95434c0 sigbus: Add fallback in case rt_tgsiqqueueinfo() fails 2022-11-16 16:07:31 +01:00
Daan De Meyer
aa6aa81c1e mkfs-util: Add support for rootless xfs population
We use mkfs.xfs's protofile (-p) support to achieve this. The
protofile is a description of the files that should be copied into
the filesystem. The format is described in the manpage of mkfs.xfs.
2022-11-16 15:38:17 +01:00
Luca Boccassi
39a306ba34
Merge pull request #25319 from zx2c4-forks/krngseed
boot: implement kernel EFI RNG seed protocol with proper hashing
2022-11-16 15:07:54 +01:00
Daan De Meyer
ee69f2b414 sigbus: Make sure the signal is delivered to the same thread 2022-11-16 15:07:23 +01:00
Daan De Meyer
a54219532d missing_syscall: Add rt_tgsigqueueinfo() 2022-11-16 15:03:41 +01:00
Lennart Poettering
1282fec93f
Merge pull request #25310 from jlinton/fpdt_dev_mem_alt
acpi-fpdt: Use kernel fpdt parsing
2022-11-16 14:55:17 +01:00
Lennart Poettering
45e99be3fb
Merge pull request #24855 from kraxel/qemu
better qemu support (handle direct kernel boot etc).
2022-11-16 14:53:42 +01:00
Lennart Poettering
155519f4a3
Merge pull request #25393 from poettering/tpm2-override
tpm2-util: force default TCTI to be "device" with parameter "/dev/tpm…
2022-11-16 14:30:26 +01:00
Gerd Hoffmann
941d418d19 systemd-boot man page: add section for virtual machines 2022-11-16 12:52:58 +01:00
Gerd Hoffmann
8fec4f95be boot: improve support for qemu
systemd-boot expects being loaded from ESP and is quite unhappy in case
the loaded image device path is something else.  When running on qemu
this can easily happen though.  Case one is direct kernel boot, i.e.
loading via 'qemu -kernel systemd-bootx64.efi'.  Case two is sd-boot
being added to the ovmf firmware image and being loaded from there.

This patch detects both cases and goes inspect all file systems known to
the firmware, trying to find the ESP.  When present the
VMMBootOrderNNNN variables are used to inspect the file systems in the
given order.
2022-11-16 12:52:58 +01:00
Zbigniew Jędrzejewski-Szmek
b8d6b1608e
Merge pull request #24555 from medhefgo/bootctl
bootctl: Small improvements
2022-11-16 12:27:30 +01:00
Lennart Poettering
f038576943 localectl,analyze: some minor vertical table rework fixes
Follow-up for #25339
2022-11-16 11:39:32 +01:00
Daan De Meyer
a423050e28 log: Disable log rate limiting if debug logging is enabled
When debugging, it makes sense to not do any rate limiting at all.
2022-11-16 11:37:14 +01:00
Daan De Meyer
bb8b8875f4
Merge pull request #24944 from DaanDeMeyer/repart-rootless
repart: Add support for running without root privileges
2022-11-16 09:09:06 +01:00
Daan De Meyer
1db6dbb1dc Revert "journal: Make sd_journal_previous/next() return 0 at HEAD/TAIL"
This commit broke backwards compatibility so let's revert it until
we find a better solution.

This reverts commit 977ad21b5b.
2022-11-16 00:20:54 +01:00
Marcus Schäfer
883e7cbfc0
Fix reading /etc/machine-id in kernel-install (#25388)
* Fix reading /etc/machine-id in kernel-install

The kernel-install script has code to read the contents of
/etc/machine-id into the MACHINE_ID variable. Depending
on the variable content kernel-install either logs the
value or creates a new machine id via 'systemd-id128 new'.
In that logic there is one issue. If the file /etc/machine-id
exists but is empty, the script tries to call read on an
empty file which return with an exit code != 0. As the
script code also uses 'set -e', kernel-install will exit at
this point which is unexpected.

The condition of an empty /etc/machine-id file exists for
example when building OS images, which should initialize the
system id on first boot but not staticly inside of the image.
afaik an empty /etc/machine-id is also a common approach
to make systemd indicate that it should create a new system
id. Because of this, the commit makes sure the reading of
/etc/machine-id does not fail in any case such that the
handling of the MACHINE_ID variable takes place.
2022-11-15 23:17:19 +00:00
angus-p
847dd8927b Update hostnamectl.xml
set-hostname is obsolete
2022-11-16 00:12:16 +01:00
Lennart Poettering
50a085143f tpm2: add some extra validation of device string before using it
Let's add some extra validation before constructing and using the .so
name to load. This isn't really security sensitive, given that we
used secure_getenv() to get the device string (and it thus should have
been come from a trusted source) but let's better be safe than sorry.
2022-11-15 23:14:54 +01:00
Lennart Poettering
34906680af tpm2-util: force default TCTI to be "device" with parameter "/dev/tpmrm0"
Apparently some distros default to tss-abmrd. Let's bypass that and
always go to the kernel resource manager.

abmrd cannot really work for us, since we want to access the TPM already
in earliest boot i.e. in environments the abmrd service is not available
in.

Fixes: #25352
2022-11-15 23:14:13 +01:00
Pasha Vorobyev
d7fe0a6723 MemoryZSwapMax directive to configure new memory.zswap.max cgroup file 2022-11-15 21:15:37 +01:00
Daan De Meyer
e2d057456d repart: Run most repart integration tests without root privileges
To make sure rootless mode keeps working, let's run all repart
integration tests that we can without root privileges. The only ones
we need to keep running with root privileges are the tests that operate
on a block/loop device and those that use --image=.
2022-11-15 20:23:51 +01:00
Daan De Meyer
a64769d605 repart: Don't use loop devices when we're not operating on a block device
When repart is not operating on a block device, if we avoid using
any loop devices at all, it becomes possible to run repart without
needing root privileges.

Note that this also depends on the filesystems in use to support
population without needing root privileges (specifically, squashfs,
ext4 or btrfs).
2022-11-15 20:23:51 +01:00
Daan De Meyer
0b34f351d1 repart: Change mode of temporary root to 755
Let's make sure regular users can access read/execute files when
we're populating from a temporary root.
2022-11-15 20:23:51 +01:00