# Настройки оболочки для запланированных задач

В Plesk на Linux клиенты имеют возможность создавать запланированные задачи, выполняющие команды на сервере. Используемая при этом оболочка определяет, к каким областям файловой системы запланированные задачи имеют доступ. По умолчанию доступ ограничен веб-пространством клиента. Однако администратор Plesk может это изменить.

Примечание

Если вы не знакомы с понятием оболочки, мы рекомендуем ознакомиться с ним прежде чем менять настройки, описанные в этом разделе.

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

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

- Администратор Plesk может выбрать любую оболочку для любой подписки на сервере.
- Администратор Plesk может предоставить владельцу подписки право выбирать собственную оболочку.

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

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

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

Примечание

Эта настройка затрагивает все подписки на сервере, в том числе принадлежащие администратору Plesk. Она не затрагивает запланированные задачи, созданные администратором Plesk в разделе Инструменты и настройки > Планировщик задач, настроенные на запуск от имени пользователя `root`.

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

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

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

Предупреждение

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

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

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

Вы можете также зайти на сервер по 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`» в качестве оболочки для запланированных задач по умолчанию. В результате все созданные клиентами запланированные задачи типа «Выполнить команду» перестанут работать.

Примечание

Клиенты, имеющие право выбирать другую оболочку, могут изменить это поведение, выбрав другую оболочку в разделе Сайты и домены > Доступ к веб-хостингу.

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

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

1. Перейдите в раздел Подписки, кликните по имени нужной подписки и нажмите Доступ к веб-хостингу.
2. Выберите нужную оболочку из меню «Доступ к серверу по SSH» и нажмите OK.

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

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

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

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

Это даст клиенту возможность выбрать другую оболочку в разделе Сайты и домены > Доступ к веб-хостингу. Если клиент сделает это, все запланированные задачи типа «Выполнить команду» для этой подписки будут использовать выбранную оболочку.

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

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

1. Найдите имя системного пользователя подписки. Перейдите в раздел Подписки, кликните по имени нужной подписки, нажмите Доступ к веб-хостингу и найдите значение поля «Имя пользователя».
2. Войдите на сервер Plesk по SSH и запустите команду:

    crontab -u <system user name> -l | grep SHELL