Commit Graph
9171 Commits
Author SHA1 Message Date
Lennart Poettering db2b897a86 Merge pull request #33503 from poettering/hostnamed-polkit-fixes
hostnamed: minor corrects to Varlink polkit handling
2024-06-27 12:47:46 +02:00
Lennart Poettering e44e109baa varlink: add ability to invoke and talk to remote service binary via SSH 2024-06-27 10:56:51 +02:00
Lennart Poettering ab89c6d162 varlink: if $SYSTEMD_VARLINK_LISTEN is set to "-", listen on stdio 2024-06-27 10:52:23 +02:00
Lennart Poettering 6678b9acc6 hostnamed: make sure we can actually properly parse 'allowInteractiveAuthentication' varlink parameter
If people want they should be able to turn on this flag, to allow
interactive auth. Let's make sure this actually works. i.e. add it to
the introspection data and don't refuse the parameter in Describe().
(note the varlink handling already does parameter validation through
varlink_dispatch(), hence we can just drop any further validation)
2024-06-27 10:43:21 +02:00
Lennart Poettering b6464e80d6 hostnamed: if polkit authentication fails for Varlink Describe() call, don't reply to client with an error
The logic of the Describe() call was supposed to be: if we can acquire
the PK priv to get the product UUID then let's return the product UUID,
and if we cannot then return the data without it.

This didn't work however, since the polkit varlink glue would
immediately propagate the error it acquired from polkit its own client.
Let's turn this off, optionally, so that hostnamed can handle this
nicely.
2024-06-27 10:43:21 +02:00
Lennart Poettering 4120151f7b varlink: add helper that adds a connection via stdio to a varlink server
This adds varlink_server_add_connection_stdio() as wrapper around
varlink_server_add_connection_pair(), that steals stdin/stdout fds and
turns them into a varlink connection. To be safe it replaces
stdin/stdout with /dev/null fds.
2024-06-27 09:41:54 +02:00
Lennart Poettering e73ae07b52 varlink: add new call varlink_server_add_connection_pair() for two-fd servers
This adds the server-side for varlink connections over two distinct fds.
2024-06-27 09:41:54 +02:00
Lennart Poettering 6f24e09006 varlink: add new call varlink_connect_fd_pair() helper for two-fd clients
This makes use of the functionality added in the previous commit to
implement the client-side functionality for talking to servers via a
pair of fds.
2024-06-27 09:41:54 +02:00
Lennart Poettering 2ac1fb14d9 varlink: support varlink communication via distinct input/output fds
When invoking another process via a pair of pipes it makes sense to
allow reading from one fd, and writing from another. Teach our varlink
code to do so optionally.

(sd-bus supports something similar, fill the gap).

This is preparation for a later commit that uses this to talk to remote
SSH invocations via pipes.
2024-06-27 09:41:54 +02:00
Luca Boccassi 8e6d95846b Merge pull request #33491 from keszybz/allow-interactive-auth-in-inhibit
Allow interactive auth in inhibit
2024-06-26 23:01:22 +02:00
Zbigniew Jędrzejewski-Szmek a8c3ed5f13 Rename spawn-ask-password-agent.c to just ask-password-agent.c
The functions in the file were *not* using the spawn prefix,
and the prefix seems completely unnecessary.
2024-06-26 15:04:06 +02:00
Zbigniew Jędrzejewski-Szmek 1b919ca4db Rename spawn-polkit-agent.c to just polkit-agent.c
The functions in the file were *not* using the spawn prefix,
and the prefix seems completely unnecessary.
2024-06-26 15:04:06 +02:00
Luca Boccassi 4d2a86936a Merge pull request #33451 from yuwata/core-exec-use-write
core: use write() instead of send()
2024-06-25 14:44:21 +02:00
Lennart Poettering 7f1c31829b Merge pull request #33003 from poettering/repart-progress
repart: draw progress bar during CopyBlocks= operation and other tweaks
2024-06-25 14:08:04 +02:00
Lennart Poettering ad25ede488 repart: make prefix argument to clear_progress_bar() optional
In this case, let's try to override the whole line, not just the first
few chars.
2024-06-25 10:05:07 +02:00
Lennart Poettering 17a6043a14 importd: add simple varlink API
For now, let's just support Pull() and ListTransfers(), but this is just
a start.
2024-06-25 09:57:42 +02:00
Lennart Poettering 71613cd59a import: add generic enum for choosing between tar + raw downloads 2024-06-25 09:49:26 +02:00
Lennart Poettering 05f47839e1 varlink: add varlink_many_*() helpers that send messages to a set of connections at once
If we have a Varlink interface that allows man subscribers to the same
source of events we typically want to notify all of them at once with
the same message.

Let's add some helpers for this purpose: varlink_many_*() can be used to
send messages, similar to the corresponding varlink_*() calls, but they
take a Set of Varlink objects and we issue the operation on every
connection once.

This ports over one existing case where this is beneficial, but the main
user for this is supposed to be importd later.
2024-06-25 09:49:26 +02:00
Mantas Mikulėnas 27a2513013 run: add environment variable to prevent the setting of terminal title
This goes together with the existing SYSTEMD_TINT_BACKGROUND.

Closes https://github.com/systemd/systemd/issues/33301
2024-06-25 10:39:15 +03:00
Yu Watanabe b89a262eb5 seccomp-util: split out seccomp_filter_set_add_by_name() 2024-06-25 05:14:53 +09:00
Luca Boccassi f8f06462e5 Merge pull request #33042 from poettering/machined-unpriv
machined: unprivileged machine registration
2024-06-24 20:45:37 +02:00
Luca Boccassi 9ca01a6475 Merge pull request #33000 from poettering/ssh-proxy-machine
systemd-ssh-proxy: look for VSOCK CIDs in machined
2024-06-24 20:35:07 +02:00
Mike Yuan c53580bf2e Merge pull request #33401 from yuwata/journal-revert-source-boottime-timestamp
journal: partially revert recent changes
2024-06-24 15:34:16 +02:00
Mike Yuan eb37c0c078 bus-unit-util: add PrivateTmpEx to bus_append_execute_property()
Follow-up for 9d50d053f3
2024-06-23 06:43:14 +09:00
Lennart Poettering 18eaff4272 tree-wide: fix type of read() return variable at a couple of places
read() returns ssize_t (i.e. 64bit typically). We assigned it to int
variables in some cases (i.e. 32bit typically). Let's not be so sloppy,
and not accidentally drop 32bit on the floor.

(of course, this is not an issue IRL since we'll not have allocations
above 2^32 ever we could read into, but still, let's clean this up)
2024-06-22 17:05:36 +09:00
Lennart Poettering 57b41f15e5 varlink: yet another fix around handling of IDL comments
Skip over them when validating a message against the IDL.

Add test case that tests this.
2024-06-22 17:03:17 +09:00
Lennart Poettering f98e821cda machined: support allocating a scope for machines if needed via varlink
On dbus we have two apis: one for registering a new machne when the
client already has a cgroup (RegisterMachine()) and one where it doesn't
and machined shall create it (CreateMachine()).

Let's add the same for the varlink api. To simplify things we just
implement it via a boolean flag to the existign RegisterMachine()
varlink call, since the differences are mostly minor otherwise.
2024-06-21 17:38:23 +02:00
Lennart Poettering 38a7666df3 machined: allow unprivileged registration of VMs/containers
Now that we have a concept of unprivileged VMs and containers, let's
allow unprivileged clients to register with machined too – subject to
Polkit permissions.
2024-06-21 17:38:23 +02:00
Lennart Poettering 1c7642a3b7 machined: add simple varlink API for listing machines 2024-06-21 17:28:16 +02:00
Lennart Poettering bed73f32ac varlink: yet another fix around handling of IDL comments
Skip over them when validating a message against the IDL.

Add test case that tests this.
2024-06-21 17:06:54 +02:00
Lennart Poettering 64d61d1918 install: shorten code a bit
This changes behaviour a bit, since we now keep track of OOM errors in
install_changes_add(). Which I'd argue is a good thing.
2024-06-21 16:27:13 +02:00
Lennart Poettering 422f80d59b install: collect more install_changes_add() errors
We so far collected most unexpected errors from install_changes_add()
and propagated them – but for some invocations we forgot to do that. Add
that, and take care we only propagated unexpected errors (i.e. ENOMEM
and such), but treat expected errors as before.

Follow-up for 5163c9b1e5
2024-06-21 16:25:57 +02:00
Lennart Poettering 296027122b varlink: add helper that validates a qualified Varlink symbol name
Qualified Varlink symbol names are the combination of an interface name,
followed by a dot, followed by a symbol name. It's a primary concept,
after all it's what we send over the wire for method calls and get back
for error returns.

hence, let's add an explicit validator for it.
2024-06-20 18:20:09 +02:00
Yu Watanabe 912730a2d5 Merge pull request #33426 from aafeijoo-suse/conf-parser-parse-size-log
conf-parser: print why config_parse_iec_uint64() fails
2024-06-20 23:56:59 +09:00
Ludwig Nussel 0e10c3d872 logind: implement maintenance time
Update frameworks that work automatically in the background
occasionally need to schedule reboots. Systemd-logind already
provides a nice mechanism to schedule shutdowns, send notfications
and block logins short before the time. Systemd has a framework for
calendar events, so we may conveniently use logind to define a
maintenance time for reboots.

The existing ScheduleShutdown DBus method in logind expects a usec_t
with an absolute time. Passing USEC_INFINITY as magic value now tells
logind to take the time from the configured maintenance time if set.

"shutdown -r" leverages that and uses the maintenance time
automatically if configured. The one minute default is still used if
nothing was specified.

Similarly the new 'auto' setting for the --when parameter of systemctl
uses the maintenance time if configured or a one minute timer like the
shutdown command.
2024-06-20 14:37:42 +02:00
Kamil Szczęk e262205eb7 cryptenroll: support for enrolling FIDO2 tokens in manual mode
systemd-cryptsetup supports a FIDO2 mode with manual parameters, where
the user provides all the information necessary for recreating the
secret, such as: credential ID, relaying party ID and the salt. This
feature works great for implementing 2FA schemes, where the salt file
is for example a secret unsealed from the TPM or some other source.
While the unlocking part is quite straightforward to set up, enrolling
such a keyslot - not so easy. There is no clearly documented
way on how to set this up and online resources are scarce on this topic
too. By implementing a straightforward way to enroll such a keyslot
directly from systemd-cryptenroll we streamline the enrollment process
and reduce chances for user error when doing such things manually.
2024-06-20 14:26:24 +02:00
Antonio Alvarez Feijoo b3244d2b0a conf-parser: print why config_parse_iec_uint64() fails
Print the same output as `config_parse_iec_size()` and
`config_parse_si_uint64()` if `parse_size()` fails, not only the `rvalue`.
2024-06-20 12:54:32 +02:00
Antonio Alvarez Feijoo 152f349385 conf-parser: set standard pointer alignment 2024-06-20 12:53:08 +02:00
Lennart Poettering 8710bbfe96 bootctl: add comments to Varlink interface
This is mostly intended as test case for the early enum comment bugfix,
as this Varlink IDL description now contains such comments, and
test-varlink-idl will process it forth and back aleady.
2024-06-20 10:02:40 +02:00
Lennart Poettering 9e10f3a7e8 bootctl: normalize how we report no boot entries found
This normalizes how we report an empty list of boot entries in
ListBootEntries(). Our usual pattern is to return one item per method
call, but when there is none we usually return a NoSuchXYZ error. Do so
here too.

Before this we'd return a null item instead here, and only here.

This is a minor compat break, but given that this IPC interface is very
new and probably not used so far (we don't use it in our code at least,
and google doesn#t find any other use) I think this normalization is OK
at this point.
2024-06-20 10:02:40 +02:00
Lennart Poettering 5e542f8706 varlink: correctly format comments for enums too
I apparently never tested comments on enum values and hence they didn#t
work. Fix that.
2024-06-20 08:49:40 +02:00
Yu Watanabe 8422d04e8d Merge pull request #33420 from poettering/build-with-object
sd-json: add sd_json_build() flavour that implies we are building an object
2024-06-20 13:04:32 +09:00
Lennart Poettering be5bee2a13 tree-wide: port over to new builder apis 2024-06-19 22:50:02 +02:00
Lennart Poettering 004c69a27f sd-json: add sd_json_build() wrapper macro that implies SD_JSON_BUILD_OBJECT()
In 99% of uses of sd_json_build() we want to build an object as
outermost construct. Let's shorten this most common case a bit, by
adding sd_json_buildo() that implies this. This allows us to shorten
much of our code, all across the tree.
2024-06-19 22:50:02 +02:00
Mike Yuan 4441cf330b shared/install: correctly report changes in install_info_symlink_alias()
Follow-up for b2751cf039

Also make the conditions consistent for install_info_symlink_wants().

Fixes #33411
2024-06-19 21:28:55 +02:00
Mike Yuan a159aa07e1 shared/install: propagate all errors in install_info_apply()
Currently, install_info_apply() only updates r if it's 0,
meaning that if one of the earlier install_info_symlink_alias/wants()
calls returns > 0, errors generated by later calls will be discarded.
Fix that.
2024-06-19 21:28:40 +02:00
Mike Yuan dd6b325a05 shared/install: drop unneeded initialization 2024-06-19 21:19:13 +02:00
Yu Watanabe de732ade09 Merge pull request #33034 from yuwata/update-kernel-headers
basic/linux: update kernel headers from v6.10-rc3
2024-06-20 03:53:16 +09:00
Yu Watanabe 3176c78e68 Merge pull request #32868 from keszybz/more-whomification
Fix confusion between killer and prey
2024-06-20 02:59:14 +09:00
Yu Watanabe 0cced2948f basic/linux: update kernel headers from v6.10-rc3
This also
- merges basic/linux and shared/linux,
- moves BPF_JUMP_A() to basic/missing_bpf.h,
- copies from usrspace kernel headers directory generated by 'make headers',
  rather than copying from kernel tree,
- copies const.h into our tree to reduce change in ethtool.h,
- copies auto_fs.h into our tree to reduce change in auto_dev-ioctl.h.
2024-06-20 02:35:35 +09:00