summaryrefslogtreecommitdiff
path: root/src/login
Commit message (Collapse)AuthorAge
* tree-wide: use TAKE_PTR() and TAKE_FD() macrosYu Watanabe2018-08-24
|
* tree-wide: remove unused variables (#8612)Yu Watanabe2018-08-24
|
* Rename suspend-to-hibernate to suspend-then-hibernateMario Limonciello2018-08-24
| | | | | Per some discussion with Gnome folks, they would prefer this name as it's more descriptive of what's happening.
* inhibit: make use of EXIT_SUCCESS where appropriateLennart Poettering2018-08-24
|
* bus-util: add flags for bus_map_all_properties() (#8546)Yu Watanabe2018-08-24
| | | | | | | | | | This adds flags BUS_MAP_STRDUP and BUS_MAP_BOOLEAN_AS_BOOL. If BUS_MAP_STRDUP is set, then each "s" message is duplicated. If BUS_MAP_BOOLEAN_AS_BOOL is set, then each "b" message is written to a bool pointer. Follow-up for #8488. See https://github.com/systemd/systemd/pull/8488#discussion_r175816270.
* label: rework label_fix() implementations (#8583)Lennart Poettering2018-08-24
| | | | | | | | | | | | | | | | | | | | | This reworks the SELinux and SMACK label fixing calls in a number of ways: 1. The two separate boolean arguments of these functions are converted into a flags type LabelFixFlags. 2. The operations are now implemented based on O_PATH. This should resolve TTOCTTOU races between determining the label for the file system object and applying it, as it it allows to pin the object while we are operating on it. 3. When changing a label fails we'll query the label previously set, and if matches what we want to set anyway we'll suppress the error. Also, all calls to label_fix() are now (void)ified, when we ignore the return values. Fixes: #8566
* tree-wide: warn when a directory path already exists but has bad mode/owner/typeZbigniew Jędrzejewski-Szmek2018-08-24
| | | | | | | | | | | | | | | | | | | | | When we are attempting to create directory somewhere in the bowels of /var/lib and get an error that it already exists, it can be quite hard to diagnose what is wrong (especially for a user who is not aware that the directory must have the specified owner, and permissions not looser than what was requested). Let's print a warning in most cases. A warning is appropriate, because such state is usually a sign of borked installation and needs to be resolved by the adminstrator. $ build/test-fs-util Path "/tmp/test-readlink_and_make_absolute" already exists and is not a directory, refusing. (or) Directory "/tmp/test-readlink_and_make_absolute" already exists, but has mode 0775 that is too permissive (0755 was requested), refusing. (or) Directory "/tmp/test-readlink_and_make_absolute" already exists, but is owned by 1001:1000 (1000:1000 was requested), refusing. Assertion 'mkdir_safe(tempdir, 0755, getuid(), getgid(), MKDIR_WARN_MODE) >= 0' failed at ../src/test/test-fs-util.c:320, function test_readlink_and_make_absolute(). Aborting. No functional change except for the new log lines.
* basic/mkdir: convert bool flag to enumZbigniew Jędrzejewski-Szmek2018-08-24
| | | | In preparation for subsequent changes...
* logind: drop obsolete commentLennart Poettering2018-08-24
| | | | | | The code matching this comment was removed in a50df72b37ce2a7caf7775c70d18c3f9504b9e80 in 2014, let's drop the comment too.
* logind: use manager_get_user_by_pid() where appropriateLennart Poettering2018-08-24
| | | | | The current code reimplemented something like the manager_get_user_by_pid() logic on its own, manually. Let's unify this.
* logind: rework manager_get_{user|session}_by_pid() a bitLennart Poettering2018-08-24
| | | | | | | | Let's make sure we always initialize the return value if we return non-negative. Just a matter of coding style: we should always initialize our return values when we return >= 0, and leave them unclobbered if we return < 0.
* macro: introduce new TAKE_FD() macroLennart Poettering2018-08-24
| | | | | | | This is similar to TAKE_PTR() but operates on file descriptors, and thus assigns -1 to the fd parameter after returning it. Removes 60 lines from our codebase. Pretty good too I think.
* macro: introduce TAKE_PTR() macroLennart Poettering2018-08-24
| | | | | | | | | | | | | | | | This macro will read a pointer of any type, return it, and set the pointer to NULL. This is useful as an explicit concept of passing ownership of a memory area between pointers. This takes inspiration from Rust: https://doc.rust-lang.org/std/option/enum.Option.html#method.take and was suggested by Alan Jenkins (@sourcejedi). It drops ~160 lines of code from our codebase, which makes me like it. Also, I think it clarifies passing of ownership, and thus helps readability a bit (at least for the initiated who know the new macro)
* Prep v238: fix forking of the poweroff programs in run_helper()Sven Eden2018-06-29
|
* Fix elogind debug mode:Sven Eden2018-06-29
| | | | | | | | | | | | | | When switched from autotools to meson, config.h changed fundamentally. Although enabled values are still #define HAVE_FOO 1 the disabled values are nolonger undef, but now #define HAVE_FOO 0 Therefore all instances of #ifdef ENABLE_DEBUG_ELOGIND have been changed to #if ENABLE_DEBUG_ELOGIND
* Prep v238: Disallow killing of lingering user processes even if forced.Sven Eden2018-06-29
|
* Prep v238: Do not kill user processes if not forced and the user is lingering.Sven Eden2018-06-29
|
* Cleaned up includes in elogind-dbus.cSven Eden2018-06-29
|
* manager_inhibit_timeout_handler() can be static again.Sven Eden2018-06-29
|
* Move method_do_shutdown_or_sleep() and its callers back to logind-sbus.cSven Eden2018-06-29
|
* Move bus_manager_shutdown_or_sleep_now_or_later() back to logind-dbus.cSven Eden2018-06-29
|
* Move delay_shutdown_or_sleep() back to logind-dbus.cSven Eden2018-06-29
|
* Move manager_dispatch_delayed() back to logind-dbus.cSven Eden2018-06-29
|
* login/elogind-dbus.c: Sync the following methods from systemctl.c:Sven Eden2018-06-29
| | | | * manager_scheduled_shutdown_handler()
* login/eloginctl.c: Sync the following methods from systemctl.c:Sven Eden2018-06-29
| | | | | | | | | * check_inhibitors() => logind_check_inhibitors() * elogind_reboot() => logind_reboot() * elogind_schedule_shutdown() => logind_schedule_shutdown() * elogind_set_wall_message() => logind_set_wall_message() Further introduce both -q/--quiet and --dry-run.
* Add dry_run support to manager_scheduled_shutdown_handler()Sven Eden2018-06-29
|
* login: do not wall message on cancelling shutdown when ↵Yu Watanabe2018-06-28
| | | | | | | | Manager.enable_wall_messages is false Fixes #8904. (cherry picked from commit 6e78fa4afd474dae984f3ee4a8477c623296a519)
* systemd-inhibit: ignore signal interrupt from keyboard (#8569)Christian Hesse2018-06-28
| | | | | | | | | | | | | By default both processes, systemd-inhibit and the forked one, receive the signals. Pressing Ctrl+C on the keyboard results in SIGINT being sent to the processes, followed by SIGTERM being sent to the forked process when systemd-inhibit exits. This can cause trouble when the forked process does not clean up properly but exit immediately. Instead make systemd-inhibit ignore SIGINT, leaving it to the forked process to clean up and exit. (cherry picked from commit 106f12a08fcacef713438fc055872592399deeed)
* Prep v238: Make a real distinction between 'halt' and 'poweroff'.Sven Eden2018-06-12
|
* Prep v238: Fix elogind_daemonize(), it failed due to some misunderstandings ↵Sven Eden2018-06-08
| | | | | | on my side. (cherry picked from commit 1c9629692145891f10a36227749470d87979dd0b)
* logind-user.c: As we need special.h elsewhere now, use it here, too.Sven Eden2018-06-08
| | | | (cherry picked from commit a96cb75c17b008312fca8f81bc2a126f8a87850c)
* pam_elogind.c: Remove renames by mask, check_tree.pl can handle this now.Sven Eden2018-06-08
| | | | (cherry picked from commit 6964ec46218d41d699690ed590026249969b2257)
* Prep v238: Uncomment now needed headers and unmask now needed functions in ↵Sven Eden2018-06-05
| | | | src/login (4/6)
* login: remember that fds received from PID1 need to be removed eventuallyAlan Jenkins2018-05-30
| | | | | Remember to set sd->pushed_fd when we receive an fd from PID1 on startup, the same as we set it when we send an fd to PID1.
* login: fix FDNAME in call to sd_pid_notify_with_fds()Alan Jenkins2018-05-30
| | | | | | | | | | | | | | | $ git grep FDNAME logind-session-device.c: ... "FDNAME=session-", sd->session->id); logind-session-device.c: ... "FDNAME=session", sd->session->id); Oops. Fixes #8343. Or at least a more minimal reproducer. Xorg still dies when logind is restarted, but the Xorg message says this is entirely deliberate. (This could also be the reason I hit #8035, instead of the race condition I originally suggested).
* logind: fix typo in commentLennart Poettering2018-05-30
|
* logind: open device if neededLennart Poettering2018-05-30
| | | | Fixes: #8291
* logind: cast away return value we don't care aboutLennart Poettering2018-05-30
|
* logind: voidify a function we never check the return value ofLennart Poettering2018-05-30
|
* rules: add a missing comma in 70-uaccess.rules since it improves readabilityFranck Bui2018-05-30
| | | | | | | | | | | rule-syntax-check.py failed with the following error: $ ./test/rule-syntax-check.py ./src/login/70-uaccess.rules Invalid line ./src/login/70-uaccess.rules:31: SUBSYSTEM=="sound", TAG+="uaccess" OPTIONS+="static_node=snd/timer", OPTIONS+="static_node=snd/seq" clause: TAG+="uaccess" OPTIONS+="static_node=snd/timer" The comma is actually optional but the script makes it mandatory which seems a good thing since it improves readability.
* logind: make sure we don't trip up on half-initialized session devicesLennart Poettering2018-05-30
| | | | Fixes: #8035
* logind: check file is device node before using .st_rdevLennart Poettering2018-05-30
|
* logind: let's pack a few struct fields we can packLennart Poettering2018-05-30
|
* logind: fd 0 is a valid fdLennart Poettering2018-05-30
|
* logind: let's reduce one level of indentationLennart Poettering2018-05-30
|
* logind: propagate the right error, don't make up ENOMEMLennart Poettering2018-05-30
|
* logind: rework sd_eviocrevoke()Lennart Poettering2018-05-30
| | | | | Let's initialize static variables properly and get rid of redundant variables.
* logind: trivial improvementsLennart Poettering2018-05-30
| | | | | Just some addition whitespace, some additional assert()s, and removal of redundant variables.
* login: fix user@.service case, so we don't allow nested sessions (#8051)Alan Jenkins2018-05-30
| | | | | | | | | | | | | | > logind sessions are mostly bound to the audit session concept, and audit > sessions remain unaffected by "su", in fact they are defined to be > "sealed off", i.e. in a way that if a process entered a session once, it > will always stay with it, and so will its children, i.e. the only way to > get a new session is by forking off something off PID 1 (or something > similar) that never has been part of a session. The code had a gap. user@.service is a special case PAM session which does not create a logind session. Let's remember to check for it. Fixes #8021
* nologin: extend the /run/nologin descriptions a bit (#8244)Lennart Poettering2018-05-30
| | | | | | | | | | | | This is an attempt to improve #8228 a bit, by extending the /run/nologin a bit, but still keeping it somewhat brief. On purpose I used the vague wording "unprivileged user" rather than "non-root user" so that pam_nologin can be updated to disable its behaviour for members of the "wheel" group one day, and our messages would still make sense. See #8228.