You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
1.4 KiB

5 years ago
#!/usr/bin/env sh
# Use this script to copy shared (libs) files to a chroot/jail.
# ----------------------------------------------------------------------------
# Written by BrainwreckedTech <http://www.brainwrecked.us>
# (c) 2014 BrainwreckedTech under GNU GPL v2.0+
# + Changed script to die if chroot/jail dir doesn't exist
# + Changed chroot/jail dir to be specified on command line
# + Added copying of binary to chroot/jail
# ----------------------------------------------------------------------------
# Orginally written by nixCraft <http://www.cyberciti.biz/tips/>
# (c) 2006 nixCraft under GNU GPL v2.0+
# + Added ld-linux support
# + Added error checking support
# -------------------------------------------------------------------------------
print_help () {
echo " Syntax: $0 /path/to/jail /path/to/executable"
echo "Example: $0 /srv/jail/backup /usr/bin/rsync"
}
[ ! -d "${1}" ] && echo "${1} does not exist" && print_help && exit 1
[ ! -f "${2}" ] && echo "${2} does not exist" && print_help && exit 2
cp -v "${2}" "${1}${2}"
while read -r FILE; do
FDIR="$(dirname "${FILE}")"
[ ! -d "${1}${FDIR}" ] && mkdir -p "${1}${FDIR}"
cp -v "${FILE}" "${1}${FDIR}"
done < "$(ldd "${2}" | awk '{ print $3 }' | egrep -v ^'\(')"
SLDL="$(ldd "${2}" | grep 'ld-linux' | awk '{ print $1}')"
SDIR="$(dirname "${SLDL}")"
[ ! -f "${1}${SLDL}" ] && cp -v "${SLDL}" "${1}${SDIR}"