--- 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 _AT_@ -64,6 +64,7 @@ BIN = \ mkswap \ mount \ mountpoint \ + nologin \ pagesize \ passwd \ pidof \ _AT_@ -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 _AT_@ -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 _AT_@ -0,0 +1,22 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <unistd.h> +#include <fcntl.h> + +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; +} -- 2.7.3Received on Sat Mar 26 2016 - 11:30:56 CET
This archive was generated by hypermail 2.3.0 : Sat Mar 26 2016 - 11:36:15 CET