Article ID: 115842, created on May 16, 2013, last review on Aug 11, 2015

  • 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

Gebrauchsanleitung

Führen Sie die nachfolgenden Befehle aus, um das Skript herunterzuladen, zu entpacken, ausführbar zu machen und auf Ihrem Server auszuführen:

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

Der Befehl zeigt folgende Hilfemeldung an:

# ./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.

Beispiel 1: Hinzufügen von SSH

Führen Sie folgende Schritte aus, um dem Template der Chroot-Umgebung den SSH-Befehl hinzuzufügen:

  1. Fügen Sie dem Template der Chroot-Umgebung Standardgeräte hinzu. Ohne Zugriff auf /dev/tty kann SSH nicht verwendet werden:

    # ./chroot_update.sh --devices  
    
  2. Fügen Sie das SSH-Dienstprogramm selbst hinzu:

    # ./chroot_update.sh --add `which ssh`
    
  3. Kopieren Sie die Datei /etc/resolv.conf manuell in das Template der Chroot-Umgebung (manuell, da das Skript nur für das Hinzufügen von Binärdateien und ihren abhängigen Bibliotheken oder Shell-Skripts vorgesehen ist):

    # cp /etc/resolv.conf /var/www/vhosts/chroot/etc/
    
  4. Wenden Sie Änderungen entweder auf ausgewählte Domains (in einer kommagetrennten Werteliste angegeben) oder auf alle Domains an:

    # ./chroot_update.sh --apply all
    

Nun steht SSH dem angemeldeten Domain-Benutzer zur Verfügung.

Beispiel 2: Hinzufügen von PHP zur Chroot-Umgebung

Manche Programme erfordern nicht nur Bibliotheken, mit denen die zentrale Binärdatei verknüpft ist, sondern auch Konfigurationsdateien und Plug-ins. Ein Beispiel für ein solches Programm ist PHP.

Das Hinzufügen von PHP zur Chroot-Umgebung verbessert zwar nicht die Sicherheit von PHP-Skripts auf der Website (da PHP-Skripts im non-chrooted-Kontext von Apache- oder FastCGI/CGI-Prozessen ausgeführt werden), kann aber das Entwickeln und Debuggen von PHP-Skripts erleichtern.

Führen Sie folgende Schritte aus, um PHP zum Template der Chroot-Umgebung hinzuzufügen:

  1. Fügen Sie die PHP-Binärdatei selbst hinzu:

    # ./chroot_update.sh --add `which php`
    
  2. Fügen Sie Zeitzonendefinitionen hinzu. Ohne diese gibt PHP immer dann, wenn Datums-/Zeitfunktionen verwendet werden, den Fehler * glibc detected php: free(): invalid pointer: 0x00007f11249fccd8 aus:

    # mkdir /var/www/vhosts/chroot/usr/share
    # cp -a /usr/share/zoneinfo /var/www/vhosts/chroot/usr/share
    
  3. Fügen Sie PHP-Module hinzu. Diese werden im ersten Schritt nicht hinzugefügt, da die PHP-Binärdatei mit diesen Bibliotheken nicht dynamisch verknüpft ist. Außerdem werden beim Hinzufügen von Modulen diese im bin-Verzeichnis des Chroot-Umgebungs-Template abgelegt. Sie sollten danach entfernt werden:

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

    Hinweis: Auf Ihrem System kann das Modulverzeichnis einen anderen Pfad aufweisen. Wenn Sie herausfinden wollen, an welchem Ort PHP-Module auf dem Server gespeichert werden, müssen Sie folgenden Befehl ausführen:

    # php -i | grep extension_dir
    
  4. Kopieren Sie die PHP-Module in das korrekte Verzeichnis im Template der Chroot-Umgebung:

    # mkdir /var/www/vhosts/chroot/usr/lib64
    # cp -a /usr/lib64/php /var/www/vhosts/chroot/usr/lib64
    
  5. Kopieren Sie die PHP-Konfiguration:

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

    Hinweis: Je nach Betriebssystem können die Pfade zu den Konfigurationsdateien unterschiedlich sein. Beispielsweise wird auf einer Plesk Standardinstallation unter Debian die geladene Konfigurationsdatei unter /etc/php5/cli/php.ini gespeichert. Zusätzliche .ini-Dateien werden unter /etc/php5/cli/conf.d anstatt /etc/php.d gespeichert.

    Hinweis: Wenn die Domain so eingerichtet ist, dass PHP als CGI/FastCGI-Applikation genutzt wird, sollten Sie diesen Schritt überspringen, da die php.ini-Datei in diesem Fall von Plesk verwaltet wird. Die PHP-Einstellungen können Sie über Websites & Domains > entsprechende Domain > PHP-Einstellungen anpassen.

  6. Übernehmen Sie die Änderungen:

    # ./chroot_update.sh --apply all
    

    Sie können folgenden Befehl nutzen, wenn die Änderungen nicht für alle Domains erforderlich sind:

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

    Hinweis: Die Änderungen werden nicht übernommen, wenn die Art des Shell-Zugriffs für einen bestimmten Benutzer auf "/bin/false" eingestellt ist (Einstellung 'Forbidden' in der Benutzeroberfläche von Parallels Plesk).

Wichtiger Hinweis

Der Chroot-Zugriff für Domain-Besitzer ist nicht als gleichwertiger Ersatz für einen vollen Serverzugriff vorgesehen. Er dient lediglich als hilfreiches Werkzeug für elementare Operationen wie das Ändern von Berechtigungen, das Kopieren und Verschieben von Dateien sowie das testweise Durchsuchen von Dateien. Wenn Sie feststellen, dass Sie für bestimmte Kunden immer mehr Software in das Template der Chroot-Umgebung aufnehmen müssen, sollten Sie diesen möglicherweise ein Hosting-Upgrade auf dedizierte oder virtuelle Server anbieten.

Attachments

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

Email subscription for changes to this article
Save as PDF