Article ID: 115842, created on Nov 9, 2015, 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

このコマンドで、以下の "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
    domains.

例 1:SSH を追加する

chroot 環境テンプレートに SSH コマンドを追加するには、以下の手順に従います。

  1. chroot 環境テンプレート内に標準デバイスを追加します。/dev/tty へのアクセス権がないと、SSH が機能しません。

    # ./chroot_update.sh --devices  
    
  2. SSH ユーティリティ自体を追加します。

    # ./chroot_update.sh --add `which ssh`
    
  3. /etc/resolv.conf ファイルを chroot 環境テンプレートへ手動でコピーします(スクリプトはバイナリおよびそれに依存するライブラリまたはシェルスクリプトの追加のみを意図しているため)。

    # cp /etc/resolv.conf /var/www/vhosts/chroot/etc/
    
  4. 選択したドメインのいずれかに対して(コンマ区切りリスト形式で指定)、あるいは一度にすべてのドメインに、変更を適用します。

    # ./chroot_update.sh --apply all
    

これで、ドメインのユーザとしてログインして SSH を使用できるようになります。

例 2:chroot 環境に PHP を追加する

一部のプログラムは、メインバイナリがリンクされたライブラリだけではなく、構成ファイルとプラグインも必要とします。そのようなプログラムには、たとえば PHP があります。

chroot 環境に PHP を追加してもウェブサイトの PHP スクリプトのセキュリティにメリットはありませんが(PHP スクリプトは Apache または FastCGI/CGI プロセスによって非 chroot コンテキストで実行されるため)、PHP スクリプトの開発やデバッグで有用です。

注: このセクションは、システム PHP のみが対象となり、追加の PHP は対象外となります。

chroot 環境テンプレートに PHP を追加するには、以下の手順に従います。

  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 バイナリはこれらのライブラリと動的にリンクされないためです。また、モジュールを追加すると、chroot 環境テンプレートの 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. chroot 環境テンプレートの正しいディレクトリに PHP モジュールをコピーします。

    # 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
    

    注: 構成ファイルへのパスは、OS に応じて異なる可能性があります。例えば、Debian でのデフォルト Plesk インストールの場合、ロードされた構成ファイルは /etc/php5/cli/php.ini に保存されます。追加の .ini ファイルは /etc/php.d ではなく /etc/php5/cli/conf.d に保存されます。

    注: PHP を CGI/FastCGI アプリケーションとして使用するようにドメインをセットアップした場合、この手順は省略することをお勧めします。php.ini は Plesk によって管理されます。PHP 設定を調整するには、[Websites & Domains]タブ > ドメイン >[PHP Settings]タブに進みます。

  6. 変更を適用します。

    # ./chroot_update.sh --apply all
    

    変更がすべてのドメインに必要ではない場合、以下のコマンドを実行することができます。

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

    注: 特定のユーザのシェルアクセスのタイプが /bin/false に設定されている場合(Plesk GUI では「禁止」)、変更は適用されません

重要なお知らせ

ドメイン所有者の chroot アクセスは、フルサーバアクセスに相当するように設計されていません。パーミッション変更、ファイルのコピー・移動、ファイルに対するテスト検索の実行など、基本的なオぺレーションを実行するのに便利なツールとして設計されています。少数の顧客に対してより多くのソフトウェアを chroot 環境テンプレートに追加する必要があると気付いた場合、ホスティングを専用サーバまたは仮想サーバにアップグレードすることを提案するか検討することができます。

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

Email subscription for changes to this article