Search

Language:  
Search for:

Available article translations:

[HOWTO] How to add new programs to a chrooted shell environment template

APPLIES TO:
  • Parallels Plesk Panel for Linux/Unix

Usage Instructions

Run the below commands to download, unzip, make executable, and execute the script on your server:

# wget http://kb.parallels.com/Attachments/24112/Attachments/chroot_update.zip
# unzip chroot_update.zip
# chmod +x chroot_update.sh
# ./chroot_update.sh --help

The command will display this "help" message:

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

Example 1: Adding ssh

To add the ssh command into the chrooted environment template, follow these steps:

  1. Add standard devices inside the chrooted environment template. Without access to /dev/ttyssh will not be able to work:
    # ./chroot_update.sh --devices
  2. Add the ssh utility itself:
    # ./chroot_update.sh --add `which ssh`
  3. Copy the file /etc/resolv.conf to the chrooted environment template manually (since the script is only intended for adding binaries and their dependent libraries or shell scripts):
    # cp /etc/resolv.conf /var/www/vhosts/chroot/etc/
  4. Apply changes to either of the selected domains (provided in the form of a comma-separated list) or to all domains at once:
    # ./chroot_update.sh --apply all

Now it is possible to use ssh while logged in as the domain's user.

Example 2: Adding PHP to chrooted environment

Some programs require not just libraries with which the main binary is linked, but also configuration files and plug-ins. An example of such a program is PHP. Although adding PHP to the chrooted environment will not benefit the security of PHP scripts on the website (as PHP scripts are executed in a non-chrooted context by Apache or FastCGI/CGI processes), it may be useful for the development and debugging of PHP scripts.

To add PHP to the chrooted environment template, follow these steps:

  1. Add the PHP binary itself:
    # ./chroot_update.sh --add `which php`
  2. Add timezone definitions. Without them, PHP will produce the error *** glibc detected *** php: free(): invalid pointer: 0x00007f11249fccd8 *** whenever date/time functions are used:
    # mkdir /var/www/vhosts/chroot/usr/share
    # cp -a /usr/share/zoneinfo /var/www/vhosts/chroot/usr/share
  3. Add PHP modules. They are not added on the first step because the PHP binary is not dynamically linked with these libraries. Also, adding modules will put them in the bin directory of the chrooted environment template. They should be removed afterward:
    # for f in /usr/lib64/php/modules/*.so ; do ./chroot_update.sh --add $f ; done
    # rm -f /var/www/vhosts/chroot/bin/*.so

    Note: The path to the modules directory may be different on your system. To find out where PHP modules are stored on the server, check the value for the extension_dir parameter in /etc/php.ini.
     
  4. Copy PHP modules to the correct directory in the chrooted environment template:
    # mkdir /var/www/vhosts/chroot/usr/lib64
    # cp -a /usr/lib64/php /var/www/vhosts/chroot/usr/lib64
  5. Copy the PHP configuration:
    # cp -a /etc/php.ini /etc/php.d /var/www/vhosts/chroot/etc

    Note: If the domain is set up to use PHP as a CGI/FastCGI application, it is better to omit this step, as php.ini is managed by Plesk. To adjust PHP settings, go to Websites & Domains tab > domain > PHP Settings tab.
     
  6. Apply the changes:
    # ./chroot_update.sh --apply all

Important Note

Chrooted access for domain owners is not intended to be the equivalent of full server access. Instead, it is designed to be a helpful tool to perform elementary operations like changing permissions, copying and moving files, and performing test searches on files. If you notice that you have to add more and more software into the chrooted environment template for a small number of customers, you may want to consider offering them an upgrade for their hosting to dedicated or virtual servers.



Attachments:


5d735c0e028ee5b991e4fb80d34fb87f 56797cefb1efc9130f7c48a7d1db0f0c 49af2da0f2dd4c81e962790bbbd0c2b4

FEEDBACK
Was this article helpful?
Tell us how we may improve it.
Yes No
 
 
 
 
 
 
Desktop Virtualization
- Parallels Desktop 8 for Mac
- Parallels Transporter
- Parallels Desktop Switch to Mac Edition
- Parallels Desktop for Mac Enterprise Edition
- Parallels Management-Mac for Microsoft SCCM
Server Virtualization
- Parallels Cloud Server
- Parallels Containers for Windows 6.0 Beta
- Parallels Virtuozzo Containers
Automation
- Parallels Automation
- Parallels Automation for Cloud Infrastructure
- Parallels Business Automation Standard
- Parallels Virtual Automation
- Parallels Plesk Panel Suite
- Web Presence Builder
- Parallels Plesk Automation
- Parallels Small Business Panel
- Value-added Services for Hosters
- Parallels Partner Storefront
Services & Resources
- Cloud Acceleration Services
- Professional Services
- Support Services
- Training & Certification