Появилась необходимость добавить команды find, mc и другие, в ssh окружение, которое изолированно с помощью chrotedю
Решение найдено в статье: https://support.plesk.com/hc/en-us/articles/213909545—HOWTO-How-to-add-new-programs-to-a-chrooted-shell-environment-template
Выполните следующие команды, чтобы загрузить, распаковать, сделать исполняемым и выполнить скрипт на вашем сервере:
wget https://galaxydata.ru/community/wp-content/uploads/2017/03/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 domains.
1) Пример 1: Добавление SSH
Чтобы добавить команду SSH в шаблон изолированной среде, выполните следующие действия:
- Добавить стандартные устройства внутри шаблона изолированной среде. Без доступа к /dev/tty , SSH не будет работать:
./chroot_update.sh --devices
2. Добавить себя утилиту SSH:
./chroot_update.sh --add `which ssh`
3. Скопируйте файл /etc/файл resolv.conf для шаблона изолированной среды вручную (т. к. скрипт предназначен только для добавления файлов и их зависимых библиотек и скриптов):
cp /etc/resolv.conf /var/www/vhosts/chroot/etc/
4. Применить изменения в любой из выбранных доменов (предоставляется в форме через запятую) или для всех доменов сразу:
./chroot_update.sh --apply all
Теперь можно использовать SSH при входе в систему в качестве пользователя домена.
2) Example 2: Adding PHP to chrooted environment
Some programs require not only 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.
Note: This section is applicable is only for system PHP and not for additional ones.
To add PHP to the chrooted environment template, follow these steps:
- Add the PHP binary itself:
# ./chroot_update.sh --add `which php`
- 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
- 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, run the following command:
# php -i | grep extension_dir
- 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
- Copy the PHP configuration:
# cp -a /etc/php.ini /etc/php.d /var/www/vhosts/chroot/etc
Note: Paths to configuration files may be different depending on your operating system. For example, on a default Plesk installation on Debian, the loaded configuration file is stored in/etc/php5/cli/php.ini . Additional .ini files are stored in /etc/php5/cli/conf.d instead of /etc/php.d .
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.
- Apply the changes:
# ./chroot_update.sh --apply all
You may run the following command if changes are not required for all domains:
# ./chroot_update.sh --apply <domain,...>
Note: The changes will not be applied if the type of shell access for a particular user is set to /bin/false (‘Forbidden’ in the Parallels Plesk Panel GUI).
Chapter 1. Важное Примечание
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.