ubase

suckless linux base utils
git clone git://git.2f30.org/ubase.git
Log | Files | Refs | README | LICENSE

commit df3ed8877fc5219d9f42e9fd807a9f447780ea2c
parent 84467fe733a0df879554d459e13b2399c7f77263
Author: Mattias Andrée <maandree@kth.se>
Date:   Sat Mar 26 11:30:56 +0100

Add nologin(8)

Signed-off-by: Mattias Andrée <maandree@kth.se>

Diffstat:
Makefile | 2++
nologin.8 | 21+++++++++++++++++++++
nologin.c | 22++++++++++++++++++++++
3 files changed, 45 insertions(+), 0 deletions(-)
diff --git 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 @@ -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 @@ -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; +}