From 840cb9cbf0145a203f5f7eb562746e101d101494 Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Mon, 23 Sep 2024 17:39:46 +0700 Subject: [PATCH] linux-chroot.sh added in bin --- bin/linux-chroot.sh | 65 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 bin/linux-chroot.sh diff --git a/bin/linux-chroot.sh b/bin/linux-chroot.sh new file mode 100755 index 0000000..f11516d --- /dev/null +++ b/bin/linux-chroot.sh @@ -0,0 +1,65 @@ +#!/bin/sh + +PATH=$1 +SHELL=$2 + +#------- Check root func ------------------- +check_root() { + if [ $(/usr/bin/id -u) -ne 0 ]; then + printf "** You must be root\n" + exit 1 + fi +} +#------------------------------------------- + +#----------- checking or create dirs ------- +check_or_mkdir() { + [ ! -d $PATH/dev ] && mkdir -pv $PATH/dev + [ ! -d $PATH/proc ] && mkdir -pv $PATH/proc + [ ! -d $PATH/sys ] && mkdir -pv $PATH/sys + [ ! -d $PATH/run ] && mkdir -pv $PATH/run +} +#------------------------------------------- + +#-------- mount virtual filesystems -------- +mount_virtual() { + /usr/bin/mount -v --bind /dev $PATH/dev + /usr/bin/mount -vt devpts devpts -o gid=5,mode=0620 $PATH/dev/pts + /usr/bin/mount -vt proc proc $PATH/proc + /usr/bin/mount -vt sysfs sysfs $PATH/sys + /usr/bin/mount -vt tmpfs tmpfs $PATH/run + if [ -h $PATH/dev/shm ]; then + /usr/bin/install -v -d -m 1777 $PATH$(/usr/bin/realpath /dev/shm) + else + /usr/bin/mount -vt tmpfs -o nosuid,nodev tmpfs $PATH/dev/shm + fi + /usr/bin/cp -v /etc/resolv.conf $PATH/etc/resolv.conf +} +#------------------------------------------- + +#------ umount virtual filesystems --------- +umount_virtual() { + /usr/bin/mountpoint -q $PATH/dev/shm && /usr/bin/umount $PATH/dev/shm + /usr/bin/umount $PATH/dev/pts + /usr/bin/umount $PATH/{sys,proc,run,dev} +} +#------------------------------------------- + +#------ get shell path func ---------------- +get_shell() { + if [[ "$SHELL" != "" ]]; then + echo $SHELL + fi + echo "/bin/sh" +} +#------------------------------------------- + +check_root +check_or_mkdir +mount_virtual +/usr/bin/chroot \ + $PATH \ + /usr/bin/env -i \ + PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin \ + $(get_shell) +umount_virtual