about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--README3
-rwxr-xr-xchroot.sh41
3 files changed, 45 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 39fd7f6..2020094 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
+chroot.tar
 client
 help
+root
 server
 torus.dat
 torus.sock
diff --git a/README b/README
index 198714d..520f878 100644
--- a/README
+++ b/README
@@ -9,5 +9,6 @@ C source files are self-compiling, e.g. ./server.c.
     client.c       Curses client.
     help.c         Automated client which redraws a helpful banner.
 
-    termcap.diff   Patch for bright colors with TERM=xterm-256color.
+    chroot.sh      Creates chroot tarball.
     sshd_config    Anonymous login to chrooted client.
+    termcap.diff   Patch for bright colors with TERM=xterm-256color.
diff --git a/chroot.sh b/chroot.sh
new file mode 100755
index 0000000..fe4442a
--- /dev/null
+++ b/chroot.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+set -e -u -x
+
+./server.c
+./client.c
+./help.c
+
+if [ ! -f termcap.db ]; then
+    patch -p0 -o termcap < termcap.diff
+    cap_mkdb termcap
+fi
+
+user=torus
+ownflags='-o root -g wheel'
+dirflags="-d $ownflags"
+binflags="$ownflags -m 555"
+libflags="$ownflags -m 444"
+
+mkdir -p root
+
+for dir in bin home lib libexec usr; do
+    sudo install $dirflags root/$dir
+done
+sudo install $dirflags root/usr/share
+sudo install $dirflags root/usr/share/misc
+sudo install -d -o $user -g $user root/home/$user
+
+sudo install $binflags /libexec/ld-elf.so.1 root/libexec
+
+for lib in libc.so.7 libedit.so.7 libncurses.so.8 libncursesw.so.8; do
+    sudo install $libflags /lib/$lib root/lib
+done
+
+for bin in server client help; do
+    sudo install $binflags $bin root/bin
+done
+sudo install $binflags /bin/sh root/bin
+
+sudo install $libflags termcap.db root/usr/share/misc
+
+tar -c -f chroot.tar -C root bin home lib libexec usr