summary refs log tree commit diff
diff options
context:
space:
mode:
authorC. McEnroe2020-02-11 22:07:01 -0500
committerC. McEnroe2020-02-11 22:28:39 -0500
commit252428f97aa6a8f4e5b612757ce96d2d0d37e2f3 (patch)
treeeccc953e0838dccb5912fcf4a408c8084ff304a5
parent907d4b4605a212a645fc78420a29fa34ed9c0642 (diff)
Add chroot target
-rw-r--r--.gitignore2
-rw-r--r--Makefile44
-rw-r--r--scripts/chroot-man.sh2
-rw-r--r--scripts/chroot-prompt.sh6
-rw-r--r--scripts/sshd_config13
5 files changed, 67 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 4cc4220..e96e0c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
 *.o
 catgirl
+chroot.tar
 config.mk
+root/
 tags
diff --git a/Makefile b/Makefile
index b1ffede..4d20e62 100644
--- a/Makefile
+++ b/Makefile
@@ -39,3 +39,47 @@ install: catgirl catgirl.1
 
 uninstall:
 	rm -f ${PREFIX}/bin/catgirl ${MANDIR}/man1/catgirl.1.gz
+
+CHROOT_USER = chat
+CHROOT_GROUP = ${CHROOT_USER}
+
+chroot.tar: catgirl catgirl.1 scripts/chroot-prompt.sh scripts/chroot-man.sh
+	install -d -o root -g wheel \
+		root \
+		root/bin \
+		root/etc/ssl \
+		root/home \
+		root/lib \
+		root/libexec \
+		root/usr/bin \
+		root/usr/share/man \
+		root/usr/share/misc
+	install -d -o ${CHROOT_USER} -g ${CHROOT_GROUP} \
+		root/home/${CHROOT_USER} \
+		root/home/${CHROOT_USER}/.local/share
+	cp -fp /libexec/ld-elf.so.1 root/libexec
+	cp -fp \
+		/lib/libc.so.7 \
+		/lib/libncursesw.so.8 \
+		/lib/libthr.so.3 \
+		/lib/libz.so.6 \
+		/usr/local/lib/libcrypto.so.45 \
+		/usr/local/lib/libssl.so.47 \
+		/usr/local/lib/libtls.so.19 \
+		root/lib
+	chflags noschg root/libexec/* root/lib/*
+	cp -fp /etc/hosts /etc/resolv.conf root/etc
+	cp -fp /etc/ssl/cert.pem root/etc/ssl
+	cp -af /usr/share/locale root/usr/share
+	cp -fp /usr/share/misc/termcap.db root/usr/share/misc
+	cp -fp /rescue/sh /usr/bin/mandoc /usr/bin/less root/bin
+	${MAKE} install PREFIX=root/usr
+	install scripts/chroot-prompt.sh root/usr/bin/catgirl-prompt
+	install scripts/chroot-man.sh root/usr/bin/man
+	tar -c -f chroot.tar -C root bin etc home lib libexec usr
+
+install-chroot: chroot.tar
+	tar -x -f chroot.tar -C /home/${CHROOT_USER}
+
+clean-chroot:
+	rm -fr chroot.tar root
diff --git a/scripts/chroot-man.sh b/scripts/chroot-man.sh
new file mode 100644
index 0000000..9d686f9
--- /dev/null
+++ b/scripts/chroot-man.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec mandoc /usr/share/man/man1/catgirl.1 | LESSSECURE=1 less
diff --git a/scripts/chroot-prompt.sh b/scripts/chroot-prompt.sh
new file mode 100644
index 0000000..3b43841
--- /dev/null
+++ b/scripts/chroot-prompt.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -eu
+
+printf 'Name: '
+read -r nick rest
+exec catgirl -n "$nick" -s "$nick" "$@"
diff --git a/scripts/sshd_config b/scripts/sshd_config
new file mode 100644
index 0000000..4669f7f
--- /dev/null
+++ b/scripts/sshd_config
@@ -0,0 +1,13 @@
+UsePAM no
+
+Match User chat
+	PasswordAuthentication yes
+	PermitEmptyPasswords yes
+	ChrootDirectory /home/chat
+	ForceCommand catgirl-prompt
+
+	AllowAgentForwarding no
+	AllowTcpForwarding no
+	AllowStreamLocalForwarding no
+	MaxSessions 1
+	X11Forwarding no