commit 6e7386edb34f5acdd5dbbee68e85b16415a3b4aa
Author:     Mattias Andrée <[email protected]>
AuthorDate: Sat Mar 26 11:30:56 2016 +0100
Commit:     sin <[email protected]>
CommitDate: Sat Mar 26 19:08:10 2016 +0000

    Add nologin(8)
    
    Signed-off-by: Mattias Andrée <[email protected]>

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 <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;
+}

Reply via email to