晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /proc/self/root/usr/local/lsws-old/admin/misc/ |
Upload File : |
#!/bin/sh
OS=`uname -s`
HW=`uname -i`
CHROOT=$1
EXECUTABLE=$2
if [ "x$CHROOT" = "x" ]; then
cat <<EOF
Usage: chrootEnv.sh <chroot path> [path_to_binary]
EOF
exit 1
fi
CUR_USER=`id`
CUR_USER=`expr "$CUR_USER" : 'uid=.*(\(.*\)) gid=.*'`
if [ $CUR_USER != "root" ]; then
echo "[ERROR] You must be root user to setup chroot environment!"
fi
if [ `expr "$CHROOT" : '\/'` -eq 0 ]; then
echo "[ERROR] Chroot path must be absolute path!"
exit 1
fi
if [ $CHROOT = "/" ]; then
echo "It is not necessory to setup the environment when chroot to '/'."
exit 0
fi
if [ -f $CHROOT ]; then
echo "[ERROR] chroot directory does not exist!"
exit 1
fi
copy_library()
{
ldd $EXECUTABLE > /tmp/dynlibs
while read dynlib
do
if [ "x$OS" != "xSunOS" ]; then
libname=`expr "$dynlib" : '\(.*\) => .* .*'`
libpath=`expr "$dynlib" : '.* => \(.*\) .*'`
else
libname=`expr "$dynlib" : '[ ]*\(.*\) =>.*'`
libpath=`expr "$dynlib" : '.* =>[ ]*\(.*\)'`
fi
if [ "x$libpath" != "x" ]; then
if [ "$libpath" = "/usr/lib/$libname" ]; then
#if [ ! -f "$CHROOT/usr/lib/$libname" ] && [ ! -f "$CHROOT/$libname" ]; then
cp $libpath $CHROOT/usr/lib
#fi
elif [ "$libpath" = "/usr/lib64/$libname" ]; then
#if [ ! -f "$CHROOT/usr/lib64/$libname" ] && [ ! -f "$CHROOT/$libname" ]; then
cp $libpath $CHROOT/usr/lib64
#fi
elif [ "$libpath" = "/lib64/$libname" ]; then
#if [ ! -f "$CHROOT/lib64/$libname" ] && [ ! -f "$CHROOT/$libname" ]; then
cp $libpath $CHROOT/lib64
#fi
else
#if [ ! -f "$CHROOT/lib/$libname" ] && [ ! -f "$CHROOT/$libname" ]; then
cp $libpath $CHROOT/lib
#fi
fi
fi
done < /tmp/dynlibs
rm /tmp/dynlibs
}
copy_perl()
{
cp /usr/bin/perl $CHROOT/usr/bin
EXECUTABLE=/usr/bin/perl
copy_library
if [ "x$OS" = "xFreeBSD" ]; then
mkdir $CHROOT/usr/libdata
cp -R /usr/libdata/perl $CHROOT/usr/libdata
elif [ "x$OS" = "xSunOS" ]; then
cp -R /usr/perl5 $CHROOT/usr
elif [ "x$HW" = "xx86_64" ]; then
cp -R /usr/lib64/perl5 $CHROOT/usr/lib64
else
cp -R /usr/lib/perl5 $CHROOT/usr/lib
fi
}
update_existing()
{
cd $CHROOT
for f in `find lib lib64 usr/lib usr/lib64 bin usr/bin -type f`; do rsync -av -L /$f ./$f; done
rsync -av /etc/pki ./etc/
#NSS required file, otherwise curl breaks
FILES="/lib64/libfreeblpriv3.chk
/lib64/libfreeblpriv3.so
/lib64/libfreebl3.so
/lib64/libfreebl3.chk
/usr/lib64/libnsssysinit.so
/usr/lib64/libnsspem.so
/usr/lib64/libnssdbm3.so
/usr/lib64/libnssdbm3.chk
/usr/lib64/libsoftokn3.so
/usr/lib64/libsoftokn3.chk"
for f in $FILES ; do rsync -av -L /$f ./$f; done
ln -sf ../../lib64/libfreeblpriv3.so $CHROOT/usr/lib64/libfreeblpriv3.so
}
if [ "x$EXECUTABLE" = 'x' ]; then
for req_dir in 'bin' 'lib' 'usr' 'usr/bin' 'usr/lib' 'dev' 'tmp' 'etc'
do
if [ ! -d "$CHROOT/$req_dir" ]; then
mkdir $CHROOT/$req_dir
chmod 755 $CHROOT/$req_dir
fi
done
chmod 1777 $CHROOT/tmp
if [ "x$HW" = "xx86_64" ]; then
for req_dir in 'lib64' 'usr/lib64'
do
if [ ! -d "$CHROOT/$req_dir" ]; then
mkdir $CHROOT/$req_dir
chmod 755 $CHROOT/$req_dir
fi
done
fi
if [ "x$OS" = "xFreeBSD" ]; then
mknod $CHROOT/dev/null c 2 2
mknod $CHROOT/dev/random c 2 3
mknod $CHROOT/dev/urandom c 2 4
mknod $CHROOT/dev/zero c 2 12
mkdir $CHROOT/usr/libexec
cp /usr/libexec/ld* $CHROOT/usr/libexec
mkdir $CHROOT/usr/share
cp -R /usr/share/locale $CHROOT/usr/share
elif [ "x$OS" = "xSunOS" ]; then
mknod $CHROOT/dev/null c 13 2
mknod $CHROOT/dev/random c 82 0
mknod $CHROOT/dev/urandom c 82 1
#from solaris 10
# mknod $CHROOT/dev/random c 149 0
# mknod $CHROOT/dev/urandom c 149 1
# mknod $CHROOT/dev/poll c 138 0
mknod $CHROOT/dev/zero c 13 12
cp /usr/lib/ld.so.1 /usr/lib/libdl.so.1 /usr/lib/libc.so.1 $CHROOT/usr/lib
cp -R /usr/lib/locale $CHROOT/usr/lib
else
mknod $CHROOT/dev/null c 1 3
mknod $CHROOT/dev/random c 1 8
mknod $CHROOT/dev/urandom c 1 9
mknod $CHROOT/dev/zero c 1 5
if [ "x$OS" = "xLinux" ]; then
cp /lib/ld-linux.so.* $CHROOT/lib
fi
cp /lib/libnss_dns.so.* $CHROOT/lib
cp /lib/libnss_files.so.* $CHROOT/lib
cp /lib/libnss_nisplus.so.* $CHROOT/lib
cp /lib/libtermcap.so.* $CHROOT/lib
cp -R /usr/lib/locale $CHROOT/usr/lib
cp /etc/netconfig $CHROOT/etc
if [ "x$HW" = "xx86_64" ]; then
cp /lib64/libnss_dns.so.* $CHROOT/lib64
cp /lib64/libnss_files.so.* $CHROOT/lib64
cp /lib64/libnss_nisplus.so.* $CHROOT/lib64
cp /lib64/libtermcap.so.* $CHROOT/lib64
cp /lib64/ld-* $CHROOT/lib64
fi
fi
chmod 666 $CHROOT/dev/*
cp /etc/localtime $CHROOT/etc/
cp /etc/resolv.conf $CHROOT/etc/
cp /etc/hosts $CHROOT/etc/
#chown root $CHROOT
#chmod 700 $CHROOT
touch $CHROOT/etc/passwd $CHROOT/etc/group $CHROOT/etc/shadow
chmod 400 $CHROOT/etc/shadow
for req_bin in 'dirname' 'ldd' 'cat' 'echo' 'date' 'sh'
do
if [ ! -f "$CHROOT/bin/$req_bin" ]; then
if [ -f "/bin/$req_bin" ]; then
cp /bin/$req_bin $CHROOT/bin
chmod 755 $CHROOT/bin/$req_bin
EXECUTABLE=/bin/$req_bin
elif [ -f "/usr/bin/$req_bin" ]; then
cp /usr/bin/$req_bin $CHROOT/usr/bin
chmod 755 $CHROOT/usr/bin/$req_bin
EXECUTABLE=/usr/bin/$req_bin
elif [ -f "/sbin/$req_bin" ]; then
cp /sbin/$req_bin $CHROOT/bin
chmod 755 $CHROOT/bin/$req_bin
EXECUTABLE=/sbin/$req_bin
elif [ -f "/usr/sbin/$req_bin" ]; then
cp /usr/sbin/$req_bin $CHROOT/usr/bin
chmod 755 $CHROOT/usr/bin/$req_bin
EXECUTABLE=/usr/sbin/$req_bin
fi
copy_library
fi
done
elif [ "x$EXECUTABLE" = 'xperl' ]; then
copy_perl
elif [ "x$EXECUTABLE" = 'xupdate_chroot' ]; then
update_existing
else
copy_library
fi