为了安全考虑,合租的MT主机上用户的ssh shell是chroot环境,这个chroot是什么概念呢?比如说本来你的文件在系统上的位置是/var/www/vhost/fwolf.com/
,一般网站文件放在httpdocs
目录下,私人文件放在private
目录下,子域名会自动创建到subdomains
目录下;那么限定用户chroot环境之后,你登录上去看到的根目录/
就相当于原来的/var/www/vhost/fwolf.com/
,那么网站文件也路径也就变成了/httpdocs
目录,依此类推。
由于chroot限定了用户只能在自己的$HOME
内活动,所以安全性得到了提升,简单说来你不用担心合租主机上别的用户会偷看你的文件。同时/bin
、/lib
这些文件都是映射过来的,只有经过管理员选择的命令才会放在这里供使用。那么如果用户需要一个这里没有的命令怎么办呢,我[在Plesk官网文档库中扒到了一篇文章](http://kb.swsoft.com/en/818),对应到咱们的环境,是这样:
chroot有一个模板,这个模板里面的文件结构和文件就是将来要让用户使用的/的环境,首先我们编辑这个“模板”,位置在/var/www/vhosts/chroot
,可以看到下面bin dev etc lib tmp usr var
等一干目录全有,把需要的文件复制到这个目录下的相应位置,比如tar
复制到bin
下:
cp /bin/tar /var/www/vhosts/chroot/bin/
然后再用两个命令启用他们即可:
/usr/local/psa/admin/sbin/chrootmng --remove --source=/var/www/vhosts/chroot --target=all
/usr/local/psa/admin/sbin/chrootmng --create --source=/var/www/vhosts/chroot --target=all
程序命令所需要的库文件也要复制到lib
或usr/lib
目录下,那怎么知道命令使用哪些库呢?用ldd
就可以了:
# ldd /bin/tar
libc.so.6 => /lib/tls/libc.so.6 (0x00cd9000)
/lib/ld-linux.so.2 (0x0096f000)
参考:
- [CHROOT 用法详解](http://blog.chinaunix.net/u1/41578/showart.php?id=336101)