summaryrefslogtreecommitdiff
path: root/src/user-sessions
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2023-03-25 11:34:47 +0100
committerLennart Poettering <lennart@poettering.net>2023-04-03 12:32:56 +0200
commita78413baae0e999384b535d327203ebf417b1e24 (patch)
tree25a291248447fe7b56b91fa5140a33065ae362bc /src/user-sessions
parentdc2b3f94690bc02c2c1b6bdeca0d362f3639d7f0 (diff)
downloadsystemd-a78413baae0e999384b535d327203ebf417b1e24.tar.gz
user-sessions: do not remove /etc/nologin
pam_nologin looks for /etc/nologin and /run/nologin. user-sessions creates (and removes) /run/nologin, but also removes /etc/nologin. (This behaviour is unchanged since the introduction of the binary in e92787416c691c3f34f47349e5eae3fa68eae856.) By not removing pam_nologin we fully drop compatibility with PAM < 1.1. This has the advantage that now /etc/nologin can be used by administrator to disable user logins, e.g. for extended maintanance. We already specified PAM >= 1.1.2 as dependency, so this was already covered. The makes the code match the man page. Fixes #26965.
Diffstat (limited to 'src/user-sessions')
-rw-r--r--src/user-sessions/user-sessions.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/user-sessions/user-sessions.c b/src/user-sessions/user-sessions.c
index 6b7493fd88..37867ee3ed 100644
--- a/src/user-sessions/user-sessions.c
+++ b/src/user-sessions/user-sessions.c
@@ -15,7 +15,7 @@
#include "string-util.h"
static int run(int argc, char *argv[]) {
- int r, k;
+ int r;
if (argc != 2)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
@@ -29,14 +29,11 @@ static int run(int argc, char *argv[]) {
if (r < 0)
return r;
- if (streq(argv[1], "start")) {
- r = unlink_or_warn("/run/nologin");
- k = unlink_or_warn("/etc/nologin");
- if (r < 0)
- return r;
- return k;
+ /* We only touch /run/nologin. See create_shutdown_run_nologin_or_warn() for details. */
- } else if (streq(argv[1], "stop"))
+ if (streq(argv[1], "start"))
+ return unlink_or_warn("/run/nologin");
+ if (streq(argv[1], "stop"))
return create_shutdown_run_nologin_or_warn();
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown verb '%s'.", argv[1]);