Article ID: 115842, created on Mar 8, 2016, last review on Jun 17, 2016

  • Applies to:
  • Plesk 12.5 for Linux
  • Plesk 12.0 for Linux
  • Plesk 11.0 for Linux
  • Plesk 11.5 for Linux
  • Plesk 10.1 for Linux/Unix

使用说明

运行以下命令在服务器上下载、解压、令其可执行以及执行脚本:

# wget http://kb.plesk.com/Attachments/kcs-19590/chroot_update.zip
# unzip chroot_update.zip
# chmod +x chroot_update.sh
# ./chroot_update.sh --help

命令将会显示该“帮助”信息:

# ./chroot_update.sh --help
Manage chrooted template in /var/www/vhosts/chroot and apply it to domains.

Usage:
  ./chroot_update.sh --install
  ./chroot_update.sh --update
    Create default chrooted environment or update existing one
    using actual libraries from the system.

  ./chroot_update.sh --add <path>
    Add program to chrooted environment. All linked libraries
    will be copied as well. Program will always be put in /bin
    directory of chrooted environment.

  ./chroot_update.sh --devices
    Add additional devices to chrooted environment template. List
    of devices added includes: /dev/tty, /dev/urandom, /dev/ptmx
    and /dev/zero. Useful for some commands like 'rsync', 'ssh' etc.

  ./chroot_update.sh --remove <domain,...>
  ./chroot_update.sh --remove all
    Remove chrooted environment from specific domains (comma-separated
    list) or all domains with enabled chrooted shell if no domains are
    given. Useful if full re-initialization of chrooted shell environment
    on domain is needed.

  ./chroot_update.sh --apply <domain,...>
  ./chroot_update.sh --apply all
    Apply new chrooted template to specific domains (comma-separated
    list) or all domains with enabled chrooted shell if no domains
    are given. This operation is necessary to apply changes done by
    '--install', '--add' and '--devices' commands to specific or all
    域名。

示例 1:添加 SSH

若要添加 SSH 命令到 chrooted 环境模板,请执行以下步骤:

  1. 在 chrooted 环境模板中添加标准的设备。没有访问 /dev/tty 的权限,SSH 将无法工作:

    #     ./chroot_update.sh --devices
    
  2. 添加 SSH 工具本身:

    # ./chroot_update.sh --add `which ssh`
    
  3. 手动复制文件 /etc/resolv.conf 到 chrooted 环境模板(因为脚本只适用于添加二进制文件与其依赖的库或 shell 脚本):

    # cp /etc/resolv.conf /var/www/vhosts/chroot/etc/
    
  4. 应用更改到选定的域名(列表中各个域名由逗号隔开)或一次应用到所有域名:

    #     ./chroot_update.sh --apply all
    

现在以域名用户身份登录时可以使用 SSH。

示例 2:添加 PHP 到 chrooted 环境

一些程序不仅需要链接主要二进制文件的库而且需要配置文件和插件。例如 PHP 就属于此类程序。

尽管添加 PHP 到 chrooted 环境对网站上 PHP 脚本的安全没有帮助(因为 PHP 脚本由 Apache 或 FastCGI/CGI 进程在非 chrooted 环境下执行),但是可能对 PHP 脚本的开发和调试有利。

若要添加 PHP 到 chrooted 环境模板,请执行以下操作:

  1. 添加 PHP 二进制文件本身:

    # ./chroot_update.sh --add `which php`
    
  2. 添加时区定义。没有此定义,不管在何时使用日期/时间函数,PHP 都将会生成错误 * glibc detected php: free(): invalid pointer: 0x00007f11249fccd8

    # mkdir /var/www/vhosts/chroot/usr/share
    # cp -a /usr/share/zoneinfo /var/www/vhosts/chroot/usr/share
    
  3. 添加 PHP 模块。第一步时不会添加这些模块,因为 PHP 二进制文件不会动态链接这些库。而且,添加模块将会把模块放置 chrooted 环境模板的 bin 目录中。之后应被移除:

    # for f in /usr/lib64/php/modules/*.so ; do ./chroot_update.sh --add $f ; done
    # rm -f /var/www/vhosts/chroot/bin/*.so
    

    注意: 您系统上的模块目录路径可能会不一样。若要找出在服务器上存储 PHP 模块的位置,请运行以下命令:

    # php -i | grep extension_dir
    
  4. 复制 PHP 模块到 chrooted 环境模板中正确的目录:

    # mkdir /var/www/vhosts/chroot/usr/lib64
    # cp -a /usr/lib64/php /var/www/vhosts/chroot/usr/lib64
    
  5. 复制 PHP 配置:

    # cp -a /etc/php.ini /etc/php.d /var/www/vhosts/chroot/etc
    

    注意: 配置文件的路径可能会因您的操作系统而有所不同。例如,在 Debian 系统上默认的 Plesk 安装实例中,加载的配置文件存储在 /etc/php5/cli/php.ini 中。其它的 .ini 文件存储在 /etc/php5/cli/conf.d instead of /etc/php.d 中。

    注意: 如果设置域名使用 PHP 作为 CGI/FastCGI 应用程序,那么最好省掉此步骤,因为 php.ini 由 Plesk 管理。若要调整 PHP 设置,请转入 网站与域名 > domain > PHP 设置 标签。

  6. 应用更改:

    #     ./chroot_update.sh --apply all
    

    如果不是所有域名应用更改请运行以下命令:

    #     ./chroot_update.sh --apply <domain,...>
    

    注意: 如果某个用户的 shell 访问权限设置为 /bin/false( 在 Parallels Plesk Panel GUI 中“禁止”)将不会应用更改。

重要说明

域名所有者的 Chrooted 访问权限不等同于服务器的完全访问权限。而且专为执行基本操作而设计的帮助工具,其中包括更改权限、复制和移动文件、对文件执行测试搜索等。如果您已为少量客户添加了越来越多的软件到 chrooted 环境模板,可能会考虑升级其主机为专用或虚拟服务器。

29d1e90fd304f01e6420fbe60f66f838 56797cefb1efc9130f7c48a7d1db0f0c a914db3fdc7a53ddcfd1b2db8f5a1b9c def31538ba607bde27398f48ab5956be dd0611b6086474193d9bf78e2b293040 01bc4c8cf5b7f01f815a7ada004154a2 0a53c5a9ca65a74d37ef5c5eaeb55d7f aea4cd7bfd353ad7a1341a257ad4724a 2a5151f57629129e26ff206d171fbb5f e335d9adf7edffca6a8af8039031a4c7 742559b1631652fadd74764ae8be475e

Email subscription for changes to this article