---
Makefile | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
config.def.h | 1 +
nologin.8 | 21 ++++++++++
nologin.c | 19 +++++++++
4 files changed, 158 insertions(+), 7 deletions(-)
create mode 100644 config.def.h
create mode 100644 nologin.8
create mode 100644 nologin.c
diff --git a/Makefile b/Makefile
index 6b2bfdf..5e611ee 100644
--- a/Makefile
+++ b/Makefile
_AT_@ -6,6 +6,7 @@ include config.mk
HDR =\
arg.h\
compat.h\
+ config.h\
crypt.h\
fs.h\
md5.h\
_AT_@ -129,6 +130,7 @@ BIN =\
nice\
nl\
nohup\
+ nologin\
od\
pathchk\
paste\
_AT_@ -179,11 +181,109 @@ BIN =\
xinstall\
yes
+MAN1 =\
+ basename.1\
+ cal.1\
+ cat.1\
+ chgrp.1\
+ chmod.1\
+ chown.1\
+ chroot.1\
+ cksum.1\
+ cmp.1\
+ cols.1\
+ comm.1\
+ cp.1\
+ cron.1\
+ cut.1\
+ date.1\
+ dirname.1\
+ du.1\
+ echo.1\
+ ed.1\
+ env.1\
+ expand.1\
+ expr.1\
+ false.1\
+ find.1\
+ flock.1\
+ fold.1\
+ getconf.1\
+ grep.1\
+ head.1\
+ join.1\
+ hostname.1\
+ kill.1\
+ link.1\
+ ln.1\
+ logger.1\
+ logname.1\
+ ls.1\
+ md5sum.1\
+ mkdir.1\
+ mkfifo.1\
+ mktemp.1\
+ mv.1\
+ nice.1\
+ nl.1\
+ nohup.1\
+ od.1\
+ pathchk.1\
+ paste.1\
+ printenv.1\
+ printf.1\
+ pwd.1\
+ readlink.1\
+ renice.1\
+ rm.1\
+ rmdir.1\
+ sed.1\
+ seq.1\
+ setsid.1\
+ sha1sum.1\
+ sha224sum.1\
+ sha256sum.1\
+ sha384sum.1\
+ sha512sum.1\
+ sha512-224sum.1\
+ sha512-256sum.1\
+ sleep.1\
+ sort.1\
+ split.1\
+ sponge.1\
+ strings.1\
+ sync.1\
+ tail.1\
+ tar.1\
+ tee.1\
+ test.1\
+ tftp.1\
+ time.1\
+ touch.1\
+ tr.1\
+ true.1\
+ tsort.1\
+ tty.1\
+ uname.1\
+ unexpand.1\
+ uniq.1\
+ unlink.1\
+ uudecode.1\
+ uuencode.1\
+ wc.1\
+ which.1\
+ whoami.1\
+ xargs.1\
+ xinstall.1\
+ yes.1
+
+MAN8 =\
+ nologin.8
+
LIBUTFOBJ = $(LIBUTFSRC:.c=.o)
LIBUTILOBJ = $(LIBUTILSRC:.c=.o)
OBJ = $(BIN:=.o) $(LIBUTFOBJ) $(LIBUTILOBJ)
SRC = $(BIN:=.c)
-MAN = $(BIN:=.1)
all: $(BIN)
_AT_@ -191,6 +291,9 @@ $(BIN): $(LIB) $(@:=.o)
$(OBJ): $(HDR) config.mk
+config.h:
+ cp config.def.h $_AT_
+
.o:
$(CC) $(LDFLAGS) -o $_AT_ $< $(LIB)
_AT_@ -216,17 +319,21 @@ install: all
cd $(DESTDIR)$(PREFIX)/bin && ln -f test [ && chmod 755 $(BIN)
mv -f $(DESTDIR)$(PREFIX)/bin/xinstall $(DESTDIR)$(PREFIX)/bin/install
mkdir -p $(DESTDIR)$(MANPREFIX)/man1
- for m in $(MAN); do sed "s/^\.Os sbase/.Os sbase $(VERSION)/g" < "$$m" > $(DESTDIR)$(MANPREFIX)/man1/"$$m"; done
- cd $(DESTDIR)$(MANPREFIX)/man1 && chmod 644 $(MAN)
+ mkdir -p $(DESTDIR)$(MANPREFIX)/man8
+ for m in $(MAN1); do sed "s/^\.Os sbase/.Os sbase $(VERSION)/g" < "$$m" > $(DESTDIR)$(MANPREFIX)/man1/"$$m"; done
+ for m in $(MAN8); do sed "s/^\.Os sbase/.Os sbase $(VERSION)/g" < "$$m" > $(DESTDIR)$(MANPREFIX)/man8/"$$m"; done
+ cd $(DESTDIR)$(MANPREFIX)/man1 && chmod 644 $(MAN1)
+ cd $(DESTDIR)$(MANPREFIX)/man8 && chmod 644 $(MAN8)
mv -f $(DESTDIR)$(MANPREFIX)/man1/xinstall.1 $(DESTDIR)$(MANPREFIX)/man1/install.1
uninstall:
cd $(DESTDIR)$(PREFIX)/bin && rm -f $(BIN) [ install
- cd $(DESTDIR)$(MANPREFIX)/man1 && rm -f $(MAN)
+ cd $(DESTDIR)$(MANPREFIX)/man1 && rm -f $(MAN1)
+ cd $(DESTDIR)$(MANPREFIX)/man8 && rm -f $(MAN8)
dist: clean
mkdir -p sbase-$(VERSION)
- cp -r LICENSE Makefile README TODO config.mk $(SRC) $(MAN) libutf libutil $(HDR) sbase-$(VERSION)
+ cp -r LICENSE Makefile README TODO config.mk $(SRC) $(MAN1) $(MAN8) libutf libutil $(HDR) config.def.h sbase-$(VERSION)
tar -cf sbase-$(VERSION).tar sbase-$(VERSION)
gzip sbase-$(VERSION).tar
rm -rf sbase-$(VERSION)
_AT_@ -261,8 +368,11 @@ sbase-box-install: sbase-box
ln -sf sbase-box $(DESTDIR)$(PREFIX)/bin/[
mv -f $(DESTDIR)$(PREFIX)/bin/xinstall $(DESTDIR)$(PREFIX)/bin/install
mkdir -p $(DESTDIR)$(MANPREFIX)/man1
- for m in $(MAN); do sed "s/^\.Os sbase/.Os sbase $(VERSION)/g" < "$$m" > $(DESTDIR)$(MANPREFIX)/man1/"$$m"; done
- cd $(DESTDIR)$(MANPREFIX)/man1 && chmod 644 $(MAN)
+ mkdir -p $(DESTDIR)$(MANPREFIX)/man8
+ for m in $(MAN1); do sed "s/^\.Os sbase/.Os sbase $(VERSION)/g" < "$$m" > $(DESTDIR)$(MANPREFIX)/man1/"$$m"; done
+ for m in $(MAN8); do sed "s/^\.Os sbase/.Os sbase $(VERSION)/g" < "$$m" > $(DESTDIR)$(MANPREFIX)/man8/"$$m"; done
+ cd $(DESTDIR)$(MANPREFIX)/man1 && chmod 644 $(MAN1)
+ cd $(DESTDIR)$(MANPREFIX)/man8 && chmod 644 $(MAN8)
mv -f $(DESTDIR)$(MANPREFIX)/man1/xinstall.1 $(DESTDIR)$(MANPREFIX)/man1/install.1
sbase-box-uninstall: uninstall
diff --git a/config.def.h b/config.def.h
new file mode 100644
index 0000000..6ed6d69
--- /dev/null
+++ b/config.def.h
_AT_@ -0,0 +1 @@
+#define NOLOGIN_PATH "/etc/nologin.txt"
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..17ea156
--- /dev/null
+++ b/nologin.c
_AT_@ -0,0 +1,19 @@
+/* See LICENSE file for copyright and license details. */
+#include <stdio.h>
+
+#include "config.h"
+#include "text.h"
+#include "util.h"
+
+int
+main(void)
+{
+ FILE *fp;
+ if ((fp = fopen(NOLOGIN_PATH, "r"))) {
+ concat(fp, NOLOGIN_PATH, stdout, "<stdout>");
+ fshut(fp, NOLOGIN_PATH), fshut(stdout, "<stdout>");
+ } else {
+ printf("The account is currently unavailable.\n");
+ }
+ return 1;
+}
--
2.8.0
Received on Mon Apr 04 2016 - 13:22:05 CEST
This archive was generated by hypermail 2.3.0 : Mon Apr 04 2016 - 13:36:25 CEST