1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-12-25 23:21:33 +03:00
Commit Graph

59680 Commits

Author SHA1 Message Date
Lennart Poettering
3d83c3eacf
Merge pull request #24572 from DaanDeMeyer/repart-verity
repart: Add support for formatting verity partitions
2022-09-08 12:02:27 +02:00
Lennart Poettering
e586cc4cc5
Merge pull request #24434 from medhefgo/boot-fixes
boot: Small fixes
2022-09-08 11:17:12 +02:00
William Roberts
0e15c14f63 tpm2: add bind key
Currently, the tpm2 support will use encrypted sessions by creating a
primary key that is used to encrypt traffic. This creates a problem as
the key created for encrypting the traffic could be faked by an active
interposer on the bus. In cases when a pin is used, we can introduce the
bind key. The pin is used as the auth value for the seal key, aka the
disk encryption key, and that auth value can be used in the session
establishment. An attacker would need the pin value to create the secure
session and thus an active interposer without the pin could not
interpose on TPM traffic.

Related-to: #22637

Signed-off-by: William Roberts <william.c.roberts@intel.com>
2022-09-08 11:16:28 +02:00
Daan De Meyer
0fc40a0ef6 update TODO 2022-09-08 08:43:50 +02:00
Daan De Meyer
b5b7879a5d repart: Add support for formatting verity partitions
This commit adds a new Verity= setting to repart definition files
with two possible values: "data" and "hash".

If Verity= is set to "data", repart works as before, and populates
the partition with the content from CopyBlocks= or CopyFiles=.

If Verity= is set to "hash", repart will try to find a matching
data partition with Verity=data and equal values for CopyBlocks=
or CopyFiles=, Format= and MakeDirectories=. If a matching data
partition is found, repart will generate verity hashes for that
data partition in the verity partition. The UUID of the data
partition is set to the first 128 bits of the verity root hash. The
UUID of the hashes partition is set to the final 128 bits of the
verity root hash.

Fixes #24559
2022-09-08 08:43:07 +02:00
Yu Watanabe
e21253d3d7
Merge pull request #24587 from yuwata/sd-device-monitor-running-user-ns
sd-device-monitor: relax sender uid check when running in user namespace
2022-09-08 14:27:21 +09:00
Yu Watanabe
c0aa23cf1e sd-device-monitor: relax sender uid check when running in user namespace
If sd-device-monitor is running in a user namespace, the sender uid is
not zero. Let's relax the verification in that case.
2022-09-08 11:08:43 +09:00
Yu Watanabe
a30d3c0134 uid-range: move to src/basic/
To make the functions defined in the files usable by libsystemd library.
2022-09-08 11:08:43 +09:00
Lennart Poettering
cdba12b34f uid-range: error code tweak for uid_range_load_userns()
Let's return ENOSYS if /proc/ is not mounted (as that's what we usually
return in that case in various helpers that operate on /proc/). Return
EOPNOTSUPP if the kernel simply doesn't support userns.
2022-09-08 06:27:29 +09:00
Yu Watanabe
30633dbd32
Merge pull request #24571 from yuwata/dissect-loop-image-use-backing-file
dissect: save image path to LoopDevice and use it when dissect loop device
2022-09-07 23:45:29 +09:00
Daan De Meyer
3ab44dbdac repart: Invert no_dropin_files boolean 2022-09-07 14:46:21 +02:00
Daan De Meyer
a26d463d08 repart: Extract context dump into a separate function 2022-09-07 14:46:17 +02:00
Yu Watanabe
0fb5036f4d dissect-image: drop unnecessary duplication of partition device node 2022-09-07 20:45:24 +09:00
Yu Watanabe
0b214aa0d0 dissect-image: reuse LoopDevice.node in dissect_image()
Currently, dissect_image() is only called through dissect_loop_device(),
and the LoopDevice object has device name. Hence, it is not necessary to
get device name in dissect_image().
2022-09-07 20:45:24 +09:00
Yu Watanabe
bec0c37c9e dissect-image: drop currently unused arguments 2022-09-07 20:45:24 +09:00
Yu Watanabe
7726bd4b03 dissect-image: drop currently unused code
Currently, dissect_image() is called only through dissect_loop_device(),
and image_path is always specified. Let's drop it.
2022-09-07 20:45:24 +09:00
Yu Watanabe
64dd3a245f dissect-image: use loop backing file or device node as name of the image
Note, currently, for each call of dissect_loop_device_and_warn(), the
specified name is equivalent to the path passed to loop_device_make_by_path().
Hence, this should not change the current behavios.
2022-09-07 20:45:24 +09:00
Yu Watanabe
55a065cd30 gpt-auto: use LoopDevice object to manage whole block disk 2022-09-07 20:45:24 +09:00
Yu Watanabe
369de26fdf dissect-image: use backing_file stored in LoopDevice object to generate image name
Follow-up for e374439f4b (#24322).

This also simplify the logic of generating image name from image path.
2022-09-07 20:45:24 +09:00
Yu Watanabe
e77cab8248 loop-util: save backing file of loopback block device
It will be used in later commits.
2022-09-07 20:45:24 +09:00
Yu Watanabe
aa0295f1d9 loop-util: move device_has_block_children() to blockdev-util.c
As the function is not only for loopback block device.

No actual code changes, just refactoring.
2022-09-07 20:45:24 +09:00
Yu Watanabe
af15ee0368 blockdev-util: check if provided sd_device is for a whole block device
And split out partition_generator_new(), to make it usable in other
functions.
2022-09-07 20:45:24 +09:00
Yu Watanabe
46c3a28845 blockdev-util: make block_device_remove_all_partitions() take sd_device object
Then, it is not necessary to recreate sd_device object when we already
have.
2022-09-07 20:45:20 +09:00
Jan Janssen
97f077df05 boot: Avoid magic values in timeout EFI vars 2022-09-07 12:55:55 +02:00
Jan Janssen
28fda21c85 boot: Use proper scan codes
This arg expects scan codes and it can be very confusing to find a key
conflict when trying to add a F3 button when there are no F3 keycodes
seemingly in use. CHAR_CARRIAGE_RETURN and SCAN_F3 use the same value,
so no changes in behavior.
2022-09-07 12:55:55 +02:00
Jan Janssen
230f78206a boot: Accept Ctrl+Del for deleting words 2022-09-07 12:55:55 +02:00
Jan Janssen
d17d0e6770 boot: Correctly handle shift keys 2022-09-07 12:55:55 +02:00
Jan Janssen
0cf5f816f2 boot: Refuse GPT with invalid entry size
SizeOfPartitionEntry must be a multiple of 128 * 2^n.
2022-09-07 12:55:49 +02:00
Jan Janssen
71c628d426 boot: Fix device path unaligned access 2022-09-07 12:51:16 +02:00
Jan Janssen
515581d66a boot: Use mempcpy 2022-09-07 12:51:16 +02:00
Jan Janssen
aa23f91ed6 boot: Add mempcpy 2022-09-07 12:51:10 +02:00
Lennart Poettering
2c3794f422 README: we don't use crypto API in kernel anymore
This effectively reverts 9c7f7d86f8.

We dropped kernel crypto API use with
1fc8d0c9dd, hence catch up in README.
2022-09-07 11:04:34 +01:00
Lennart Poettering
c87abcfa5c README: make section title less confusing
This is about glibc NSS, not about the TLS implementation library NSS.
2022-09-07 11:30:23 +02:00
Lennart Poettering
659215cf14 README: drop some spurious empty lines, we otherwise don't place after section titles 2022-09-07 11:29:14 +02:00
Lennart Poettering
470d392aed
Merge pull request #24592 from poettering/coding-style-more2
more coding style documentation additions
2022-09-07 11:27:12 +02:00
Lennart Poettering
036b9e7fed README: use right emoji UTF-8 sequences for stop/warning sign 2022-09-07 10:49:49 +02:00
Lennart Poettering
e8a587dca2 docs: Some CODING_STYLE additions 2022-09-07 10:05:46 +02:00
Yu Watanabe
10719a6ff8 loop-util: fix leak of file descriptor on failure 2022-09-07 07:52:32 +09:00
Luca Boccassi
844768c78b
Merge pull request #15833 from AsamK/busctl_introspect_method_signature
busctl: Add introspect support for methods with same name but different signature
2022-09-06 22:21:39 +01:00
Lennart Poettering
4213dd2398 README: clarify baseline situation a bit (add emojis!) 2022-09-06 18:02:58 +01:00
Sebastian Scheibner
f2f7785d7a busctl: Add introspect support for methods with same name but different signature
D-Bus interfaces can have multiple methods with the same name, as long
as they have different arguments (signature). Currently busctl can call
those methods but when introspecting the interface it just displays
"Duplicate method"

This PR fixes the behavior, by also adding the signature to the hash for
the members set.

Before this patch:

$ busctl introspect org.asamk.Signal /org/asamk/Signal
Invalid introspection data: duplicate method 'sendMessage' on interface 'org.asamk.Signal'.

After this patch:

$ busctl introspect org.asamk.Signal /org/asamk/Signal
NAME                                TYPE      SIGNATURE RESULT/VALUE FLAGS
org.asamk.Signal                    interface -         -            -
.sendMessage                        method    as        x            -
.sendMessage                        method    s         x            -

Calling the methods already works as expected, as the user must specify
the signature explicitely:
busctl --user call org.asamk.Signal /org/asamk/Signal org.asamk.Signal sendMessage "as" 2 foo bar
busctl --user call org.asamk.Signal /org/asamk/Signal org.asamk.Signal sendMessage "s" foo

$ busctl --xml introspect org.asamk.Signal /org/asamk/Signal
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node name="/org/asamk/Signal">
 <interface name="org.asamk.Signal">
  <method name="sendMessage" >
   <arg type="as" direction="in"/>
   <arg type="x" direction="out"/>
  </method>
  <method name="sendMessage" >
   <arg type="s" direction="in"/>
   <arg type="x" direction="out"/>
  </method>
 <interface name="org.freedesktop.DBus.Introspectable">
  <method name="Introspect">
   <arg type="s" direction="out"/>
  </method>
 </interface>
 <interface name="org.freedesktop.DBus.Peer">
  <method name="Ping">
  </method>
 </interface>
</node>
2022-09-06 18:00:36 +02:00
Sebastian Scheibner
bdff06de06 busctl: Fix warning about invaild introspection data
The set_put function returns 0 if the element is already in the set and
not EEXIST, like e.g. hashmap does.
2022-09-06 18:00:33 +02:00
Frantisek Sumsal
90782fde46 test: don't fail if we don't need any external nss libs
On certain systems the `install_libnss()` function might end up with an
empty list of libraries to install, which triggers an assertion in
`image_install()`:

```
I: Install libnss
..//test-functions: line 2721: 1: parameter null or not set
make: *** [Makefile:4: setup] Error 1
```

E.g.:
```
# LD_DEBUG=files getent passwd 2>&1 >/dev/null | sed -n '/calling init: .*libnss_/ {s!^.* /!/!; p}'
/lib64/libnss_sss.so.2
/lib64/libnss_systemd.so.2
# dnf -y remove sssd-client systemd-libs
# LD_DEBUG=files getent passwd 2>&1 >/dev/null | sed -n '/calling init: .*libnss_/ {s!^.* /!/!; p}'
<no output>
```

Let's handle this case gracefully.
2022-09-07 00:21:26 +09:00
Jan Macku
3a8352cbf3 ci(issue-labeler): Add missing policy for coredump label 2022-09-06 14:59:00 +00:00
Lennart Poettering
4acbe1f6cc
Merge pull request #24425 from poettering/shutdown-lazily
shutdown: lazily umount all API vfs
2022-09-06 16:40:32 +02:00
Yu Watanabe
cc5bae6cc2 loop-util: store sd_device object for the loop device
It will be used in later commits.
2022-09-06 11:26:00 +09:00
Yu Watanabe
802e7f7234
Merge pull request #24520 from yuwata/udevadm-wait-listen-kernel-uevents
udevadm-wait: also listen kernel uevents
2022-09-06 08:33:27 +09:00
Frantisek Sumsal
5c08efee03 test: kill plymouthd after initrd transition if it's still running
Until now using the INTERACTIVE_DEBUG=yes stuff together with sanitizers
was almost impossible, since the console kept eating up our inputs or
not responding at all. After a painful day of debugging I noticed that
if we use a shell script in the initrd -> root transition, we might end up
with a plymouthd still running, which kept screwing with the tty.

E.g. with initrd -> wrapper -> systemd transition, where the `wrapper`
is a simple script:

```
exec -- /usr/lib/systemd/systemd "$@"
```

we'd end up with a stray plymouthd process after the bootup:

```
 1     0     440       2  20   0      0     0 worker I    ?          0:00 [kworker/5:2-ata_sff]
 1     0     453       2  20   0      0     0 worker I    ?          0:00 [kworker/9:2-rcu_gp]
 5     0     456       1  20   0   7252  1960 do_epo S    ?          0:00 @usr/sbin/plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session
```

After killing it, the tty works finally as expected.
2022-09-06 08:33:02 +09:00
Yu Watanabe
e063db12c3 udevadm-wait: shorten code a bit 2022-09-06 06:09:55 +09:00
Yu Watanabe
f6bb2e5189 udevadm-wait: wait for two periodic timer triggered before exit 2022-09-06 06:09:55 +09:00