#!/bin/sh # # Install Distcc with aptitude or apt-get, run the script and # copy the init-file to /etc/init.d/distcc # # www.northernsecurity.net # # updated 050527 # CHROOTDIR="/var/chroot/distccd" USERNAME="distccd" GROUPNAME="nogroup" BINARY="/usr/bin/distccd" GCC="/usr/bin/gcc*" GCCVERS="3.3" CPP="/usr/bin/cpp-$GCCVERS" AS="/usr/bin/as" MAKE="/usr/bin/make" G="/usr/bin/g++-$GCCVERS" CC1PATH="/usr/lib/gcc-lib/i486-linux/3.3.5" CC1="$CC1PATH/cc1" echo "Creating directories in $CHROOTDIR" mkdir -p $CHROOTDIR/usr/lib/i686/cmov/ $CHROOTDIR/lib/tls $CHROOTDIR/etc/default \ $CHROOTDIR/dev $CHROOTDIR/var/log/ $CHROOTDIR/tmp $CHROOTDIR/usr/{bin,sbin} \ $CHROOTDIR/var/run/distccd $CHROOTDIR/usr/lib/gcc-lib/i486-linux/3.3.5/ echo "Creating devices" mknod -m 0444 $CHROOTDIR/dev/random c 1 8 mknod -m 0444 $CHROOTDIR/dev/urandom c 1 9 mknod -m 0666 $CHROOTDIR/dev/null c 1 3 echo "Adding $USERNAME to $CHROOTDIR/etc/passwd and group" grep $USERNAME /etc/passwd > $CHROOTDIR/etc/passwd egrep '$GROUPNAME|adm' /etc/group > $CHROOTDIR/etc/group echo "Copying system files" cp /etc/{nsswitch.conf,host.conf,resolv.conf,hosts,localtime} $CHROOTDIR/etc cp /lib/{libnsl*,libnss_*,libresolv*} $CHROOTDIR/lib cp /lib/{*.so,*.so.*} $CHROOTDIR/lib cp /lib/tls/{*.so,*.so.*} $CHROOTDIR/lib/tls echo "Copying dependencies" LDDRESULT=`ldd {$BINARY,$GCC,$G,$AS,$MAKE,$CPP,$CC1} | awk '{print $3}'` for i in $LDDRESULT; do cp $i $CHROOTDIR$i done echo "Copying binaries and config files" for i in {$BINARY,$GCC,$G,$AS,$MAKE,$CPP}; do cp -L $i $CHROOTDIR$i done cp -Rp $CC1PATH/* $CHROOTDIR$CC1PATH/ cd $CHROOTDIR/usr/bin ln -s gcc cc rm {gcc,gccbug} ln -s gcc-$GCCVERS gcc ln -s gccbug-$GCCVERS gccbug ln -s g++-$GCCVERS g++ ln -s g++-$GCCVERS c++ ln -s cpp-$GCCVERS cpp touch $CHROOTDIR/var/log/distccd.log touch $CHROOTDIR/var/run/distccd/distccd.pid mv /var/log/distccd.log /var/log/distccd.`date "+%s"`.log cd /var/log/ ln -s $CHROOTDIR/var/log/distccd.log echo "Setting permissions" chown $USERNAME:adm $CHROOTDIR/var/log/distccd.log chown $USERNAME:adm $CHROOTDIR/var/run/distccd chmod 0444 $CHROOTDIR/etc/{group,host.conf,hosts,localtime,nsswitch.conf} chmod 0444 $CHROOTDIR/etc/{passwd,resolv.conf} chmod 1777 $CHROOTDIR/tmp echo "Done" echo "" echo " Don't forget to modify your init-script" echo ""