ubase

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

commit 6e7386edb34f5acdd5dbbee68e85b16415a3b4aa
parent e0dc3f9546b3cd839aef8e58376c6295679a5ed5
Author: Mattias Andrée <maandree@kth.se>
Date:   Sat, 26 Mar 2016 11:30:56 +0100

Add nologin(8)

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

Diffstat:
MMakefile | 2++
Anologin.8 | 21+++++++++++++++++++++
Anologin.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; +}