From 6e7386edb34f5acdd5dbbee68e85b16415a3b4aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Andr=C3=A9e?= Date: Sat, 26 Mar 2016 11:30:56 +0100 Subject: [PATCH] Add nologin(8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- Makefile | 2 ++ nologin.8 | 21 +++++++++++++++++++++ nologin.c | 22 ++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 nologin.8 create mode 100644 nologin.c diff --git a/Makefile b/Makefile index 4ab1856..59616a4 100644 --- a/Makefile +++ b/Makefile @@ -64,6 +64,7 @@ BIN = \ mkswap \ mount \ mountpoint \ + nologin \ pagesize \ passwd \ pidof \ @@ -129,6 +130,7 @@ MAN8 = \ lsusb.8 \ mkswap.8 \ mount.8 \ + nologin.8 \ pivot_root.8 \ readahead.8 \ rmmod.8 \ diff --git a/nologin.8 b/nologin.8 new file mode 100644 index 0000000..9ea1328 --- /dev/null +++ b/nologin.8 @@ -0,0 +1,21 @@ +.Dd March 26, 2016 +.Dt NOLOGIN 8 +.Os ubase +.Sh NAME +.Nm nologin +.Nd refuse login +.Sh SYNOPSIS +.Nm +.Sh DESCRIPTION +.Nm +prints a message informing the user that she +is not allowed to log in. If /etc/nologin.txt +exists, its content is printed instead of +the default message. +.Pp +.Nm +is intended to be specified as the user's +default shell. +.Sh EXIT STATUS +.Nm +returns a status code indicating failure. diff --git a/nologin.c b/nologin.c new file mode 100644 index 0000000..f06ec93 --- /dev/null +++ b/nologin.c @@ -0,0 +1,22 @@ +/* See LICENSE file for copyright and license details. */ +#include +#include +#include + +int +main(void) +{ + int fd; + char buf[BUFSIZ]; + ssize_t n; + + fd = open("/etc/nologin.txt", O_RDONLY); + if (fd >= 0) { + while ((n = read(fd, buf, sizeof(buf))) > 0) + write(STDOUT_FILENO, buf, n); + close(fd); + } else { + printf("The account is currently unavailable.\n"); + } + return 1; +}