Here is the script, very simple and effective 🙂
#!/bin/bash -
#===============================================================================
#
# FILE: mkchroot.sh
#
# USAGE: ./mkchroot.sh
#
# DESCRIPTION: Make a chroot environ and cd to it
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: Amit Agarwal (aka),
# CREATED: 09/03/2011 02:53:37 PM IST
# Last modified: Sat Sep 03, 2011 03:11PM
# REVISION: ---
#===============================================================================
binaries=( bash2 ls cat vi vim sudo)
#=== FUNCTION ================================================================
# NAME: copy_binary
# DESCRIPTION: copy binary to chroot
# PARAMETERS:
# RETURNS:
#===============================================================================
copy_binary ()
{
cmd=`which $1`
echo $cmd
cp $cmd bin/
ldd $cmd
while read line
do
while read ld
do
if [[ -f $ld ]]
then
echo copy $ld
cp $ld lib/
if [[ -L $ld ]]
then
ld1=$( ls -l $ld |sed 's/.*> //')
echo " copy $ld1"
cp /lib/$ld1 lib/
fi
fi
done < <(echo $line|sed 's/.*> //'|sed 's/ .*//')
done < <(ldd $cmd)
} # ---------- end of function copy_binary ----------
#=== FUNCTION ================================================================
# NAME: init
# DESCRIPTION: Do the required initialization
# PARAMETERS:
# RETURNS:
#===============================================================================
init()
{
mkdir -p {root,home,dev,etc,lib,usr,bin}
mkdir -p usr/bin
mkdir -p libexec/openssh
mknod -m 666 dev/null c 1 3
cd etc
cp /etc/ld.so.cache .
cp -avr /etc/ld.so.cache.d/ .
cp -avr /etc/ld.so.conf.d/ .
cp /etc/ld.so.conf .
cp /etc/nsswitch.conf .
cp /etc/passwd .
cp /etc/group .
cp /etc/hosts .
cp /etc/resolv.conf .
cd -
}
cd $1
if [[ -f .status ]]
then
cat .status
echo "Not running now"
else
init
for i in ${binaries[*]}
do
copy_binary $i
cp -avr /etc/${i}* etc/
done
ln bin/bash2 bin/bash
echo "complete" > .status
fi
cp -avr ~/bin/automation root/automation
sudo chroot .
.
Continue reading