Chroot a directory
create directory if not existe
mkdir /var/chroot
list all dependencies
ldd /bin/bash
result example
linux-vdso.so.1 (0x00007ffdb036e000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fbc37e37000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbc37e32000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbc37c71000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbc37f96000)
create directories and copy dependencies (see prev command)
cd /var/chroot/
mkdir bin/ lib64/ lib/
cp /lib/x86_64-linux-gnu/libtinfo.so.6 lib/
cp /lib/x86_64-linux-gnu/libdl.so.2 lib/
cp /lib/x86_64-linux-gnu/libc.so.6 lib/
cp /lib64/ld-linux-x86-64.so.2 lib64/
cp /bin/bash bin/
we can chroot but only some commands can work
chroot /var/chroot
script sh to execute after all of that
#!/bin/bash
# This script can be used to create simple chroot environment
# Written by LinuxCareer.com <http://linuxcareer.com/>
# (c) 2013 LinuxCareer under GNU GPL v3.0+
#!/bin/bash
CHROOT='/var/chroot'
mkdir $CHROOT
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
echo "Chroot jail is ready. To access it execute: chroot $CHROOT"
and execute it
./chroot.sh /bin/{ls,cat,echo,rm,bash} /usr/bin/vi /etc/hosts
a last thing to have correct keymap
cp -R /lib/terminfo/ lib/terminfo/