resumen: 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.

¿Qué shell se usa para la ejecución de tareas programadas?

El shell usado para las tareas programadas «Run a Command» está vinculado al usuario de sistema de la suscripción. Es decir, todas las tareas programadas creadas bajo una suscripción comparten el mismo shell. Por omisión, se trata del shell predeterminado configurado en las opciones del servidor y usado para todas las suscripciones presentes en el servidor. De todos modos, existen dos excepciones para esta regla:

En ambos casos, las tareas programadas «Run a Command» creadas bajo la suscripción usarán el shell personalizado y no el predeterminado.

¿Por qué usar otro shell?

Por defecto, el shell «/bin/bash (chrooted)» se configura como el shell predeterminado para las tareas programadas. Es por este motivo que los comandos ejecutados por tareas programadas sólo tienen acceso a los archivos presentes en el espacio web asociado con la suscripción. Gracias a esta medida de seguridad, se garantiza que los clientes no puedan usar las tareas programadas para interrumpir el funcionamiento del servidor o para acceder a los archivos del administrador de Plesk o de otros clientes.

Nota: 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.

El motivo principal por el que puede desear cambiar el shell predeterminado para las tareas programadas es permitir a todos los usuarios ejecutar comandos mediante tareas programadas que tengan acceso a todo el sistema de archivos del servidor.

Si no comparte el servidor con nadie o si confía en las demás personas con las que lo comparte, puede seleccionar un shell no chrooted para las tareas programadas. Si desea usar un shell no chrooted para las tareas programadas pero no está seguro del shell a escoger, seleccione «/bin/bash».

En un servidor de hosting compartido, le recomendamos establecer el shell predeterminado para tareas programadas a «/bin/bash (chrooted)». Si uno de sus clientes requiere un shell no chrooted para sus tareas programadas, puede concederlo en una suscripción de forma individualizada para la suscripción.

Advertencia: si se concede acceso a un cliente a otro shell que no sea «/bin/bash (chrooted)», el cliente podrá ejecutar binarios y acceder a los archivos y datos que no sean suyos. Esto supone un riesgo de seguridad para el servidor.

Establezca el shell predeterminado para las tareas programadas

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

Asimismo, también puede acceder al servidor mediante SSH y ejecutar el siguiente comando:

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

Aquí, <shell> es el shell deseado. Por ejemplo:

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

Impida el uso de tareas programadas «Run a Command»

Si cree que uno de sus clientes ha creado una tarea programada que efectúa una actividad malintencionada en el servidor, como por ejemplo el envío de spam, puede desactivar todas las tareas programadas «Run a command» mientras realiza las investigaciones pertinentes.

Acceda al servidor Plesk mediante SSH y ejecute el siguiente comando:

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

para establecer el shell predeterminado a «/bin/false» para las tareas programadas. De esta forma, las tareas programadas «Run a command» creadas por los clientes no podrán realizarse correctamente.

Nota: Customers that have the permission to select a different shell can override this for their subscriptions by selecting a different shell.

Establezca un shell personalizado para una determinada suscripción

Para establecer un shell personalizado para una determinada suscripción, haga lo siguiente:

  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.

Todas las tareas programadas «Run a Command» para esta suscripción usarán el shell seleccionado.

Permita a un cliente establecer un shell personalizado para su suscripción

Para que un cliente pueda establecer un shell personalizado para una de sus suscripciones, haga lo siguiente:

  1. Vaya a Suscripciones, haga clic en la suscripción deseada y haga clic en Personalizar.
  2. En la pestaña «Permisos», seleccione las casillas «Administración de la configuración de hosting» y «Establecimiento de opciones de script web de hosting potencialmente inseguras que invaliden la directiva del proveedor» y haga clic en Actualizar y bloquear.

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.

Averigüe el shell usado por una suscripción

Para averiguar el shell usado para las tareas programadas «Run a Command» de una suscripción, haga lo siguiente:

  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. Acceda al servidor Plesk mediante SSH y ejecute el siguiente comando:
crontab -u <system user name> -l | grep SHELL