Collect libraries in array to prevent repeatedly copying the same files
This commit is contained in:
@ -4,6 +4,9 @@ export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
|
|||||||
|
|
||||||
test "$1" != "" || (echo "Need path to chroot directory" && exit 1)
|
test "$1" != "" || (echo "Need path to chroot directory" && exit 1)
|
||||||
|
|
||||||
|
ALL_LIB_DIRECTORIES=()
|
||||||
|
ALL_LIB_FILES=()
|
||||||
|
|
||||||
### functions
|
### functions
|
||||||
function CHROOT_BINARY() {
|
function CHROOT_BINARY() {
|
||||||
BINARY="$1"
|
BINARY="$1"
|
||||||
@ -15,31 +18,39 @@ function CHROOT_BINARY() {
|
|||||||
if [ "$LIB_FILES" != "" ]; then
|
if [ "$LIB_FILES" != "" ]; then
|
||||||
for LIB_FILE in $LIB_FILES; do
|
for LIB_FILE in $LIB_FILES; do
|
||||||
LIB_DIRECTORY="$(dirname $LIB_FILE)"
|
LIB_DIRECTORY="$(dirname $LIB_FILE)"
|
||||||
mkdir -pm 0555 $CHROOT_DIRECTORY$LIB_DIRECTORY
|
if [[ ! "${ALL_LIB_DIRECTORIES[@]}" =~ "$LIB_DIRECTORY" ]]; then
|
||||||
cp $LIB_FILE $CHROOT_DIRECTORY$LIB_FILE
|
ALL_LIB_DIRECTORIES=(${ALL_LIB_DIRECTORIES[@]} "$LIB_DIRECTORY")
|
||||||
chmod 0555 $CHROOT_DIRECTORY$LIB_FILE
|
fi
|
||||||
|
if [[ ! "${ALL_LIB_FILES[@]}" =~ "$LIB_FILE" ]]; then
|
||||||
|
ALL_LIB_FILES=(${ALL_LIB_FILES[@]} "$LIB_FILE")
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
if [ "$LDD_FILES" != "" ]; then
|
if [ "$LDD_FILES" != "" ]; then
|
||||||
for LDD_FILE in $LDD_FILES; do
|
for LDD_FILE in $LDD_FILES; do
|
||||||
LDD_DIRECTORY="$(dirname $LDD_FILE)"
|
LDD_DIRECTORY="$(dirname $LDD_FILE)"
|
||||||
mkdir -pm 0555 $CHROOT_DIRECTORY${LDD_DIRECTORY}
|
if [[ ! "${ALL_LIB_DIRECTORIES[@]}" =~ "$LDD_DIRECTORY" ]]; then
|
||||||
cp $LDD_FILE $CHROOT_DIRECTORY$LDD_FILE
|
ALL_LIB_DIRECTORIES=(${ALL_LIB_DIRECTORIES[@]} "$LDD_DIRECTORY")
|
||||||
chmod 0555 $CHROOT_DIRECTORY$LDD_FILE
|
fi
|
||||||
|
if [[ ! "${ALL_LIB_FILES[@]}" =~ "$LDD_DIRECTORY" ]]; then
|
||||||
|
ALL_LIB_FILES=(${ALL_LIB_FILES[@]} "$LDD_FILE")
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
cp $BINARY $CHROOT_DIRECTORY/$BINARY
|
BINARY_DIRECTORY="$(dirname $BINARY)"
|
||||||
chmod 0555 $CHROOT_DIRECTORY/$BINARY
|
mkdir -pm 0555 $CHROOT_DIRECTORY$BINARY_DIRECTORY
|
||||||
|
cp $BINARY $CHROOT_DIRECTORY$BINARY
|
||||||
|
chmod 0555 $CHROOT_DIRECTORY$BINARY
|
||||||
}
|
}
|
||||||
|
|
||||||
function CHROOT_FILE() {
|
function CHROOT_LIBRARIES() {
|
||||||
cp $1 $CHROOT_DIRECTORY/$1
|
for DIRECTORY in ${ALL_LIB_DIRECTORIES[@]}; do
|
||||||
}
|
mkdir -pm 0555 $CHROOT_DIRECTORY$DIRECTORY
|
||||||
|
done
|
||||||
function CHROOT_DIRECTORY() {
|
for FILE in ${ALL_LIB_FILES[@]}; do
|
||||||
mkdir -pm 0555 $CHROOT_DIRECTORY/$1
|
cp $FILE $CHROOT_DIRECTORY$FILE
|
||||||
rm -rf $CHROOT_DIRECTORY/$1/ > /dev/null 2>&1
|
chmod 0555 $CHROOT_DIRECTORY$FILE
|
||||||
cp -Rp $1 $CHROOT_DIRECTORY/$1
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
### variables
|
### variables
|
||||||
@ -63,6 +74,13 @@ CHROOT_DIRECTORY_STRUCTURE=(
|
|||||||
'/var/run'
|
'/var/run'
|
||||||
'/var/run/mysqld'
|
'/var/run/mysqld'
|
||||||
)
|
)
|
||||||
|
CHROOT_DIRECTORY_TO_CLEAN=(
|
||||||
|
'/bin'
|
||||||
|
'/lib'
|
||||||
|
'/usr/bin'
|
||||||
|
'/usr/lib'
|
||||||
|
'/usr/sbin'
|
||||||
|
)
|
||||||
BINARIES_GENERAL=(
|
BINARIES_GENERAL=(
|
||||||
'/bin/bash'
|
'/bin/bash'
|
||||||
'/bin/bzip2'
|
'/bin/bzip2'
|
||||||
@ -250,6 +268,7 @@ test "$CHROOT_DIRECTORY" != ""
|
|||||||
|
|
||||||
if [ "$2" != "" ]; then
|
if [ "$2" != "" ]; then
|
||||||
CHROOT_BINARY $2
|
CHROOT_BINARY $2
|
||||||
|
CHROOT_LIBRARIES
|
||||||
echo "copied extra binary $2";
|
echo "copied extra binary $2";
|
||||||
exit 0;
|
exit 0;
|
||||||
fi
|
fi
|
||||||
@ -258,6 +277,9 @@ fi
|
|||||||
mkdir -p $CHROOT_DIRECTORY
|
mkdir -p $CHROOT_DIRECTORY
|
||||||
chown root:www-data $CHROOT_DIRECTORY
|
chown root:www-data $CHROOT_DIRECTORY
|
||||||
chmod 550 $CHROOT_DIRECTORY
|
chmod 550 $CHROOT_DIRECTORY
|
||||||
|
for DIRECTORY in ${CHROOT_DIRECTORY_TO_CLEAN[@]}; do
|
||||||
|
rm -rf $CHROOT_DIRECTORY$DIRECTORY
|
||||||
|
done
|
||||||
for DIRECTORY in ${CHROOT_DIRECTORY_STRUCTURE[@]}; do
|
for DIRECTORY in ${CHROOT_DIRECTORY_STRUCTURE[@]}; do
|
||||||
mkdir -pm 0555 $CHROOT_DIRECTORY$DIRECTORY
|
mkdir -pm 0555 $CHROOT_DIRECTORY$DIRECTORY
|
||||||
done
|
done
|
||||||
@ -276,14 +298,15 @@ test -e $CHROOT_DIRECTORY/dev/random || mknod -m 644 $CHROOT_DIRECTORY/dev/ra
|
|||||||
test -e $CHROOT_DIRECTORY/dev/urandom || mknod -m 644 $CHROOT_DIRECTORY/dev/urandom c 1 9
|
test -e $CHROOT_DIRECTORY/dev/urandom || mknod -m 644 $CHROOT_DIRECTORY/dev/urandom c 1 9
|
||||||
# copy general directories
|
# copy general directories
|
||||||
for DIRECTORY in ${DIRECTORIES_GENERAL[@]}; do
|
for DIRECTORY in ${DIRECTORIES_GENERAL[@]}; do
|
||||||
CHROOT_DIRECTORY $DIRECTORY
|
rm -rf $CHROOT_DIRECTORY$DIRECTORY
|
||||||
|
cp -Rp $DIRECTORY $CHROOT_DIRECTORY$DIRECTORY
|
||||||
done
|
done
|
||||||
echo "export HOME=/" > $CHROOT_DIRECTORY/etc/profile.d/hosting.sh
|
echo "export HOME=/" > $CHROOT_DIRECTORY/etc/profile.d/hosting.sh
|
||||||
echo "export HISTFILE=/.bash_history" >> $CHROOT_DIRECTORY/etc/profile.d/hosting.sh
|
echo "export HISTFILE=/.bash_history" >> $CHROOT_DIRECTORY/etc/profile.d/hosting.sh
|
||||||
echo 'export PATH="$PATH:/.composer/vendor/bin"' >> $CHROOT_DIRECTORY/etc/profile.d/hosting.sh
|
echo 'export PATH="$PATH:/.composer/vendor/bin"' >> $CHROOT_DIRECTORY/etc/profile.d/hosting.sh
|
||||||
# copy general files
|
# copy general files
|
||||||
for FILE in ${FILES_GENERAL[@]}; do
|
for FILE in ${FILES_GENERAL[@]}; do
|
||||||
CHROOT_FILE $FILE
|
cp $FILE $CHROOT_DIRECTORY$FILE
|
||||||
done
|
done
|
||||||
### copy shared libraries and binaries
|
### copy shared libraries and binaries
|
||||||
# general
|
# general
|
||||||
@ -302,4 +325,5 @@ done
|
|||||||
for BINARY in /usr/lib/php/*/*.so; do
|
for BINARY in /usr/lib/php/*/*.so; do
|
||||||
CHROOT_BINARY $BINARY
|
CHROOT_BINARY $BINARY
|
||||||
done
|
done
|
||||||
|
CHROOT_LIBRARIES
|
||||||
ln -f $CHROOT_DIRECTORY/usr/bin/php8.0 $CHROOT_DIRECTORY/usr/bin/php
|
ln -f $CHROOT_DIRECTORY/usr/bin/php8.0 $CHROOT_DIRECTORY/usr/bin/php
|
||||||
|
Reference in New Issue
Block a user