Commit Graph

35564 Commits

Author SHA1 Message Date
Zbigniew Jędrzejewski-Szmek 54fcb6192c core: define "exit" and "exit-force" actions for user units and only accept that
We would accept e.g. FailureAction=reboot-force in user units and then do an
exit in the user manager. Let's be stricter, and define "exit"/"exit-force" as
the only supported actions in user units.

v2:
- rename 'exit' to 'exit-force' and add new 'exit'
- add test for the parsing function
2018-10-17 19:31:49 +02:00
Zbigniew Jędrzejewski-Szmek 454dd6ce7a man: move description of *Action= modes to FailureAction=/SuccessAction=
FailureAction=/SuccessAction= were added later then StartLimitAction=, so it
was easiest to refer to the existing description. But those two settings are
somewhat simpler (they just execute the action unconditionally) while
StartLimitAction= has additional timing and burst parameters, and they are
about to take on a more prominent role, so let's move the description of
allowed values.
2018-10-17 19:28:18 +02:00
Zbigniew Jędrzejewski-Szmek ef5ae8e713 core: consider service with no start command immediately started
The service would always be in state == SERVICE_INACTIVE, but it needs to go
through state == SERVICE_START so that SuccessAction/FailureAction are executed.
2018-10-17 19:28:16 +02:00
Zbigniew Jędrzejewski-Szmek 1bcf3fc6c5 core: return true from cg_is_empty* on ENOENT 2018-10-17 17:49:57 +02:00
Zbigniew Jędrzejewski-Szmek f03ec2b180 systemctl: fix typo 2018-10-16 23:03:52 +02:00
Lennart Poettering b921711248 logind: validate /run/user/1000 before we set it
Let's be safe than sorry, in particular as logind doesn't set it up
anymore, but user-runtime-dir@.service does, and logind doesn't really
track success of that.
2018-10-13 13:01:08 +02:00
Lennart Poettering 93d4cb09d5 core: fix unfortunate typo in unit_is_unneeded()
Follow-up for a3c1168ac2.
2018-10-13 13:01:08 +02:00
Lennart Poettering cf99f8eacf core: make destructive transaction error a bit more useful 2018-10-13 13:01:08 +02:00
Lennart Poettering 0689812331 update TODO 2018-10-13 13:01:08 +02:00
Lennart Poettering 964c4eda5b man: also use "yes"/"no" rather than "true"/"false" in man pages
We usually use yes/no in all our unit files, do the same in the man
pages.

Triggered by:

https://github.com/systemd/systemd/pull/9824#issuecomment-420729987
2018-10-13 12:59:29 +02:00
Lennart Poettering 2d6718bf3d units: use =yes rather than =true everywhere
So far we always used "yes" instead of "true" in all our unit files,
except for one outlier. Let's do this here too. No change in behaviour
whatsoever, except that it looks prettier ;-)
2018-10-13 12:59:29 +02:00
Lennart Poettering 4e5b605af2 logind: automatically GC lingering users for who now user@.service (nor slice, not runtime dir service) is running anymore
This heavily borrows from @intelfx' PR #5546, but watches all three
units that are associated with a user now: the slice, the user@.service
and user-runtime-dir@.service.

The logic and reasoning behind it is the same though: there's no value
in keeping lingering users around if all their three services are gone.

Replaces: #5546
Fixes: #4162
2018-10-13 12:59:29 +02:00
Lennart Poettering 6996df9b86 logind: improve error propagation of user_check_linger_file()
Let's make this a bit prettier, and propagate unexpected access() errors
correctly.

(The callers of this function will suppress them, but it's nicer of they
do that, rather than us doing that twice in both the callers and the
callees)
2018-10-13 12:59:29 +02:00
Lennart Poettering d5ac9d0602 logind: add a RequiresMountsFor= dependency from the session scope unit to the home directory of the user
This is useful so that during shutdown scope units are always terminated
before the mounts necessary for the home directory.

(Ideally we'd also add a similar dependency from the user@.service
instance to the home directory, but this isn't as easy as that service
is defined statically and not dynamically, and hence not easy to modify
dynamically, in particular when it comes to deps)
2018-10-13 12:59:29 +02:00
Lennart Poettering 07ee5adb35 logind: change user-runtime-dir to query runtime dir size from logind via the bus
I think this is a slightly cleaner approach than parsing the
configuration file at multiple places, as this way there's only a single
reload cycle for logind.conf, and that's systemd-logind.service's
runtime.

This means that logind and dbus become a requirement of
user-runtime-dir, but given that XDG_RUNTIME_DIR is not set anyway
without logind and dbus around this isn't really any limitation.

This also simplifies linking a bit as this means user-runtime-dir
doesn't have to link against any code of logind itself.
2018-10-13 12:59:29 +02:00
Lennart Poettering 3d0ef5c7e0 logind: optionally watch utmp for login data
This allows us to determine the TTY an ssh session is for, which is
useful to to proper idle detection for ssh sessions.

Fixes: #9622
2018-10-13 12:59:29 +02:00
Lennart Poettering 238794b150 logind: add hashtable for finding session by leader PID
This is useful later on, when we quickly want to find the session for a
leader PID.
2018-10-13 12:59:29 +02:00
Lennart Poettering 9afe9efb93 logind: optionally, keep the user@.service instance for eached logged in user around for a while
This should speed up rapid logout/login cycles a bit.

By default this timeout is now set to 10s.

Fixes: #8410
Replaces: #4434
2018-10-13 12:59:29 +02:00
Lennart Poettering 061c6607a9 logind: minor session time handling tweaks 2018-10-13 12:59:29 +02:00
Lennart Poettering 25a1ab4ed4 logind: rework how we manage the slice and user-runtime-dir@.service unit for each user
Instead of managing it explicitly, let's simplify things and rely on
regular Wants=/Requires= dependencies to pull in these units from
user@.service and the session scope, and StopWhenUneeded= to stop these
auxiliary units again. This way, they can be pulled in easily by
unrelated units too.

This simplifies things quite a bit: for each session we now only need to
manage the session scope, and for each user the user@.service, the other
units are not something we need to manage anymore.

This patch also makes sure that if user@.service of a user is masked we
will continue to work, and user-runtime-dir@.service will still be
correctly pulled in, as it is now a dependency of the scope unit.

Fixes: #9461
Replaces: #5546
2018-10-13 12:59:29 +02:00
Lennart Poettering ea3a7cf6c3 logind: don't clobber bus error structure if we don't fail 2018-10-13 12:59:29 +02:00
Lennart Poettering e6958b7ea3 logind: propagate session stop errors
Let's propagate errors from stopping sessions via seat_stop(). This is
similar to how we propagate such errors in user_stop() for all sessions
associated with a user.

Note that we propagate these errors, but we don't abort the function.
2018-10-13 12:59:29 +02:00
Lennart Poettering b1951bc83f logind: introduce little helper that checks whether a session is ready 2018-10-13 12:59:29 +02:00
Lennart Poettering 1b88ed3b7d logind: use TAKE_PTR() where we can 2018-10-13 12:59:29 +02:00
Lennart Poettering d5ddc93015 logind: prefer strjoin() over asprintf() 2018-10-13 12:59:29 +02:00
Lennart Poettering 709d058756 logind: don't rely on downgrade-to-bool 2018-10-13 12:59:29 +02:00
Lennart Poettering 75bbdf478c logind: voidify a few calls 2018-10-13 12:59:29 +02:00
Lennart Poettering e555d12635 logind: make better use of logging functions 2018-10-13 12:59:29 +02:00
Lennart Poettering 04857cd801 logind: never elect a session that is stopping as display 2018-10-13 12:59:29 +02:00
Lennart Poettering bd26aee1f6 logind: make unit/job active checking more debuggable
Let's log the error messages if we get any at debug level.
2018-10-13 12:59:29 +02:00
Lennart Poettering 74fb9617a8 man: add missing space 2018-10-13 12:59:29 +02:00
Lennart Poettering 190128e407 sd-bus: add new API call sd_bus_error_move()
This new call move an sd_bus_error into another one.
2018-10-13 12:59:29 +02:00
Lennart Poettering cce08496e7 logind: fix bad error propagation 2018-10-13 12:59:29 +02:00
Lennart Poettering d88ffeeeef logind: correct bad clean-up path 2018-10-13 12:59:29 +02:00
Lennart Poettering d865bc024b logind: save/restore User object's "stopping" field during restarts
Whether we are stopping or not is highly relevant, hence don't forget it
across restarts.
2018-10-13 12:59:29 +02:00
Lennart Poettering 0b6d55cae9 logind: improve logging in manager_connect_console()
let's make sure we log about every failure

Also, complain about systems where /dev/tty0 exists but
/sys/class/tty/tty0/active does not. Such systems (usually container
environments) are pretty broken as they mount something that is not a VC
to /dev/tty0 and they really shouldn't.

Systems should either have a VC or not, but not badly fake one by
mounting things wildly.

This just adds a warning message, as before we'll simply turn off VC
handling in this case.
2018-10-13 12:59:29 +02:00
Lennart Poettering b25ba6cf67 logind: initialize Manager object with structure initialization too 2018-10-13 12:59:29 +02:00
Lennart Poettering 14df094a51 units: improve Description= string a bit
Let's not use the word "wrapper", as it's not clear what that is, and in
some way any unit file is a "wrapper"... let's simply say that it's
about the runtime directory.
2018-10-13 12:59:29 +02:00
Lennart Poettering 1007473b49 units: set StopWhenUnneeded= for the user slice units too
We'd like them to go away, just like the user-runtime-dir@.service when
they aren't needed anymore.
2018-10-13 12:59:29 +02:00
Lennart Poettering 4417640013 logind: turn of stdio locking when writing session files too
This just copies what we already do for user and seat files to session
files.
2018-10-13 12:59:29 +02:00
Lennart Poettering 1c8280fd47 logind: fix serialization/deserialization of user's "display session"
Previously this was serialized as part of the user object. This didn't
work however, as we load users first, and sessions seconds and hence
referencing a session from the user load logic cannot work.

Fix this by storing an IS_DISPLAY property along with each session, and
make the session with this set display session when it is loaded.
2018-10-13 12:59:29 +02:00
Lennart Poettering 8c29a45709 logind: rework Seat/Session/User object allocation and freeing a bit
Let's update things a bit to follow current practices:

- User structure initialization rather than zero-initialized allocation

- Always propagate proper errors from allocation functions

- Use _cleanup_ for freeing objects when allocation fails half-way

- Make destructors return NULL
2018-10-13 12:59:29 +02:00
Yu Watanabe fd8879498d Revert "alloc-util: return NULL if 0-sized allocation is requested"
This reverts commit c05107767b.
2018-10-13 12:34:32 +02:00
Lucas Werkmeister d5bf4f9b8f man: systemctl: clarify that --lines=0 is allowed (#10375)
The term “positive” is often read to exclude 0 (though “strictly
positive” is sometimes used to clarify this), so let’s explicitly state
that --lines=0 is legal and completely disables journal output.

Motivated by an answer on StackExchange [1].

[1]: https://unix.stackexchange.com/a/475068/44049
2018-10-13 17:31:40 +09:00
Yu Watanabe 8837715ef2
Merge pull request #10371 from poettering/sd-event-man-fix
trivial sd-event man page fixes
2018-10-13 17:30:44 +09:00
Jason A. Donenfeld 7d0b26a027 networkd: fix attribute length for wireguard (#10380)
This is actually a u16, not a u32, so the kernel complains:

kernel: netlink: 'systemd-network': attribute type 5 has an invalid length

This is due to:

if (nla_attr_len[pt->type] && attrlen != nla_attr_len[pt->type]) {
        pr_warn_ratelimited("netlink: '%s': attribute type %d has an invalid length.\n",
                            current->comm, type);
}

Presumably this has been working fine in functionality on little-endian
systems, but nobody bothered to try on big-endian systems.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-13 17:28:49 +09:00
Davide Cavalca b75f0c69b3 shared: add %g, %G specifiers for group / gid (#10368) 2018-10-13 17:26:48 +09:00
Yu Watanabe b4b3649a94
Merge pull request #10366 from poettering/in-set-fixes
IN_SET() compile time check fixes
2018-10-13 17:25:36 +09:00
Lennart Poettering a6ee956610
Merge pull request #10356 from dtardon/covscan
assorted coverity/clang fixes
2018-10-12 18:43:04 +02:00
Lennart Poettering 1f6f77a5fb
Merge pull request #10379 from jwrdegoede/hwdb-updates
Hwdb updates
2018-10-12 18:21:15 +02:00