Содержание: You can give customers the ability to create scheduled tasks that run commands on the server. In Plesk for Linux, the shell being used determines which areas of the file system scheduled tasks have access to. By default, access is limited to the customer’s webspace. However, Plesk administrator has the ability to change that.

In this topic, you will learn how to set the default shell for scheduled tasks, how to set a custom shell for an individual subscription, and also how to allow a customer to set a custom shell for their subscription. You will also learn how to prevent customers from using the «Run a Command» scheduled tasks.

Note: If you are not familiar with the concept of Linux shells, we recommend learning more before changing the settings described in this topic.

Какая оболочка используется для выполнения запланированных задач?

Оболочка, используемая для запланированных задач типа «Выполнить команду», привязана к системному пользователю подписки (то есть все запланированные задачи, созданные в подписке, используют одну и ту же оболочку). Обычно она совпадает с оболочкой по умолчанию, заданной в настройках сервера и используемой для всех подписок на сервере. Однако из этого правила есть два исключения:

В обоих случаях запланированные задачи типа «Выполнить команду», созданные в подписке, будут использовать выбранную оболочку вместо заданной по умолчанию.

Зачем использовать другую оболочку?

Обычно оболочка «/bin/bash (chrooted)» задана как оболочка по умолчанию для запланированных задач. Это означает, что команды, выполняемые в запланированных задачах, имеют доступ только к файлам в веб-пространстве, ассоциированном с подпиской. Это важная мера безопасности, которая гарантирует, что клиенты не могут использовать запланированные задачи, чтобы нарушить работу сервера, или получить доступ к файлам, принадлежащим администратору Plesk или другим клиентам.

Примечание: This setting affects all subscriptions on the server, including those owned by the Plesk administrator. It does not affect the scheduled tasks created by the Plesk administrator in Tools & Settings > Scheduled Tasks (Cron jobs) (under «Tools & Resources») that are configured to run under the root user.

Основная причина, по которой вам может понадобиться изменить оболочку по умолчанию для запланированных задач ― это необходимость выдать всем пользователям на сервере возможность запускать команды посредством запланированных задач, имеющих доступ к файловой системе всего сервера.

Если вы не используете сервер совместно с кем-либо еще или доверяете другим пользователям, вы можете выбрать оболочку, отличную от chrooted для запланированных задач. Если вы хотите использовать для запланированных задач оболочку, отличную от chrooted, но не уверены в том, какую именно оболочку выбрать, выберите «/bin/bash».

На сервере виртуального хостинга мы рекомендуем оставить «/bin/bash (chrooted)» в качестве оболочки по умолчанию для запланированных задач. Если одному из ваших клиентов требуется возможность использовать для запланированных задач оболочку, отличную от chrooted, вы можете предоставить эту возможность на уровне подписки.

Предупреждение: Предоставление клиентам доступа к оболочкам, отличным от «/bin/bash (chrooted)», дает им возможность запускать двоичные файлы и доступ к не принадлежащим им файлам и данным. Это рискованно в плане безопасности и может привести к уязвимости сервера.

Как задать оболочку по умолчанию для запланированных задач

To set the shell that will be used to run all «Run a Command» scheduled tasks by default, go to Tools & Settings > Scheduled Tasks (Cron jobs) (under «Tools & Resources») > Settings and select the desired shell from the menu.

image select shell

Вы можете также зайти на сервер по SSH и запустить следующую команду:

plesk bin server_pref -u -crontab-secure-shell "<shell>"

Где <shell> ― это значение оболочки. Например:

plesk bin server_pref -u -crontab-secure-shell "/bin/bash"

Как запретить выполнение запланированных задач типа «Выполнить команду»

Если вы думаете, что кто-то из ваших клиентов создал запланированную задачу, выполняющую вредоносные действия на сервере (например, рассылку спама), вы можете запретить выполнение всех запланированных задач типа «Выполнить команду» на время проведения расследования.

Войдите на сервер Plesk по SSH и запустите команду

plesk bin server_pref -u -crontab-secure-shell "/bin/false"

чтобы установить «/bin/false» в качестве оболочки для запланированных задач по умолчанию. В результате все созданные клиентами запланированные задачи типа «Выполнить команду» перестанут работать.

Примечание: Customers that have the permission to select a different shell can override this for their subscriptions by selecting a different shell.

Как установить персонализированную оболочку для отдельной подписки

Чтобы установить персонализированную оболочку для отдельной подписки, выполните следующие шаги:

  1. Go to Subscriptions, click the desired subscription, go to the «Hosting & DNS» tab, and then click Hosting.
  2. Select the desired shell from the «SSH Access» menu and click Save.

Все запланированные задачи типа «Выполнить команду» для этой подписки будут использовать выбранную оболочку.

Как разрешить клиентам устанавливать собственную оболочку для своей подписки

Чтобы разрешить клиентам устанавливать собственную оболочку для одной из своих подписок, выполните следующие шаги:

  1. Перейдите в раздел Подписки, кликните по имени нужной подписки и нажмите Настроить.
  2. На вкладке «Права» поставьте галочки «Управление настройками хостинга » и «Настройка потенциально ненадежных параметров веб-скриптов, которые отменяют политику провайдера» и нажмите Обновить и заблокировать.

This will give the customer the ability to select a different shell in Websites & Domains > «Hosting & DNS» tab > Hosting. If they do, all «Run a Command» scheduled tasks for their subscription will use the selected shell.

Как узнать, какая оболочка используется в подписке

Чтобы узнать, в какой оболочке выполняются задачи типа «Выполнить команду» для подписки, выполните следующие шаги:

  1. Look up the username of the subscription’s system user. Go to Subscriptions, click the desired subscription, go to the «Hosting & DNS» tab, click Hosting, and then look for the «Username» field.
  2. Войдите на сервер Plesk по SSH и запустите команду:
crontab -u <system user name> -l | grep SHELL