Created
November 3, 2013 05:23
-
-
Save schnell18/7287068 to your computer and use it in GitHub Desktop.
Script to automate the creation of chroot jail w/ minimal executables to run git.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# script to automate the creation of chroot jail | |
# w/ minimal executables to run git | |
export CHROOT=/var/chroot | |
function copy_binary() { | |
for i in $(ldd $*|grep -v dynamic|cut -d " " -f 3|sed 's/://'|sort|uniq) | |
do | |
cp --parents $i $CHROOT | |
done | |
# ARCH amd64 | |
if [ -f /lib64/ld-linux-x86-64.so.2 ]; then | |
cp --parents /lib64/ld-linux-x86-64.so.2 $CHROOT | |
fi | |
# ARCH i386 | |
if [ -f /lib/ld-linux.so.2 ]; then | |
cp --parents /lib/ld-linux.so.2 $CHROOT | |
fi | |
} | |
# setup directory layout | |
mkdir $CHROOT | |
mkdir -p $CHROOT/{dev,etc,home,tmp,proc,root,var} | |
# setup device | |
mknod $CHROOT/dev/null c 1 3 | |
mknod $CHROOT/dev/zero c 1 5 | |
mknod $CHROOT/dev/tty c 5 0 | |
mknod $CHROOT/dev/random c 1 8 | |
mknod $CHROOT/dev/urandom c 1 9 | |
chmod 0666 $CHROOT/dev/{null,tty,zero} | |
chown root.tty $CHROOT/dev/tty | |
# copy programs and libraries | |
copy_binary /bin/{bash,ls,cp,rm,cat,mkdir,ln,grep,cut,sed} /usr/bin/{vim,ssh,head,tail,which,id,find,xargs} `which git` | |
# copy git resource files | |
cp -r --parents /usr/share/git-core $CHROOT | |
# copy vim resource files | |
cp -r --parents /usr/share/vim $CHROOT | |
# copy basic system level files | |
cp --parents /etc/group $CHROOT | |
cp --parents /etc/passwd $CHROOT | |
cp --parents /etc/shadow $CHROOT | |
cp --parents /etc/nsswitch.conf $CHROOT | |
cp --parents /etc/resolv.conf $CHROOT | |
cp --parents /etc/hosts $CHROOT | |
cp --parents /lib/libnss_* $CHROOT | |
cp -r --parents /usr/share/terminfo $CHROOT | |
# setup public key for root | |
mkdir -p $CHROOT/root/.ssh | |
chmod 0700 $CHROOT/root/.ssh | |
cp {id_rsa,id_rsa.pub} $CHROOT/root/.ssh | |
# setup public key for qbot | |
mkdir -p $CHROOT/home/qbot/.ssh | |
chmod 0700 $CHROOT/home/qbot/.ssh | |
cp {id_rsa,id_rsa.pub} $CHROOT/home/qbot/.ssh | |
chown -R qbot.qbot $CHROOT/home/qbot/.ssh | |
# create symlinks | |
cd $CHROOT/usr/bin | |
ln -s vim vi | |
echo "chroot jail is created. type: chroot $CHROOT to access it" |
Many thanks for sharing.
Thank you
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Just wanted to say thanks for putting this out there. This is great and taught me a few things about Linux in general.