在OpenBSD中chroot ImageMagick(适合phpbb,discuz,phpwind以及wordpress,gellary等)
发表于 : 2010-02-28 1:32
先说一下个人的看法,如果您已经在chroot环境内安装了phpbb/discuz/phpwind/wordpress/gellary等或它们中的几种,因为已经将太多的东西置入了chroot环境了,也许你觉得“虱子多了不咬,债多了不愁”了,但实际上这并不符合FAQ上chroot的Apache原本的安全理念,有时直接用apache2是个很不错的主意,一是省却了不少麻烦,二是还可以利用一些安全插件。
步入正题,很多的论坛程序、blog、电子相册等需要GD图形库或ImageMagick的支持,空间商一般对GD的支持比较好,但ImageMagick的处理速度更快,图形处理也比较好,图像种类也多一些。如果你想用ImageMagick,而且也使用OpenBSD自带的chroot的Apache,那么要手动将ImageMagick放入chroot环境是很麻烦的事情,但现在仅需执行以下脚本就可以了,我是在OpenBSD 4.6的稳定版上测试的,由于软件和操作系统的版本不断发展,考虑到实效性,今后该脚本可能会失效,想了解到朋友请自行到其主页上浏览。
步入正题,很多的论坛程序、blog、电子相册等需要GD图形库或ImageMagick的支持,空间商一般对GD的支持比较好,但ImageMagick的处理速度更快,图形处理也比较好,图像种类也多一些。如果你想用ImageMagick,而且也使用OpenBSD自带的chroot的Apache,那么要手动将ImageMagick放入chroot环境是很麻烦的事情,但现在仅需执行以下脚本就可以了,我是在OpenBSD 4.6的稳定版上测试的,由于软件和操作系统的版本不断发展,考虑到实效性,今后该脚本可能会失效,想了解到朋友请自行到其主页上浏览。
代码: 全选
#!/bin/sh
IMAGEMAGICK="/usr/local/bin/composite /usr/local/bin/convert /usr/local/bin/identify"
if [ ! -d /var/www/usr/local/bin ]; then mkdir -p /var/www/usr/local/bin ;fi
if [ ! -d /var/www/usr/local/lib ]; then mkdir -p /var/www/usr/local/lib ;fi
if [ ! -d /var/www/usr/libexec ]; then mkdir -p /var/www/usr/libexec; fi
if [ ! -d /var/www/usr/lib ]; then mkdir -p /var/www/usr/lib ;fi
LOCALBIN=`ldd $IMAGEMAGICK | grep -v : | grep usr | awk '{print $7}' | grep bin`
LOCALLIB=`ldd $IMAGEMAGICK | grep -v : | grep usr | awk '{print $7}' | grep local | grep -v libexec | grep lib`
LIB=`ldd $IMAGEMAGICK | grep -v : | grep usr | awk '{print $7}' | grep -v local | grep -v libexec | grep lib`
LIBEXEC=`ldd $IMAGEMAGICK | grep -v : | grep usr | awk '{print $7}' | grep libexec`
for x in $LOCALBIN
do
if [ ! -x /var/www${x} ]; then
cp -p $x /var/www${x}
echo Copied $x
else
echo /var/www$x already executable
fi
done
for x in $LOCALLIB
do
if [ ! -r /var/www${x} ]; then
cp -p $x /var/www${x}
echo Copied $x
else
echo /var/www$x already readable
fi
done
for x in $LIB
do
if [ ! -r /var/www${x} ]; then
cp -p $x /var/www${x}
echo Copied $x
else
echo /var/www$x already readable
fi
done
for x in $LIBEXEC
do
if [ ! -r /var/www${x} ]; then
cp -p $x /var/www${x}
echo Copied $x
else
echo /var/www$x already readable
fi
done