Résumé: 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.

Quel shell est utilisé pour exécuter les tâches planifiées ?

Le shell utilisé pour les tâches planifiées « Exécuter une commande » est lié à l’utilisateur système de l’abonnement (c’est-à-dire que toutes les tâches planifiées créées sous un abonnement partagent le même shell). Par défaut, il correspond au shell par défaut configuré dans les paramètres de serveur et utilisé pour tous les abonnements sur le serveur. Toutefois, il existe deux exceptions à cette règle :

Dans les deux cas, les tâches planifiées « Exécuter une commande » créées sous l’abonnement utiliseront le shell personnalisé à la place du shell par défaut.

Pour quelle raison utiliser un shell différent ?

Par défaut, le shell « /bin/bash (chrooted) » est configuré comme le shell par défaut pour les tâches planifiées. Il fait en sorte que les commandes exécutées par les tâches planifiées aient uniquement accès aux fichiers contenus dans l’espace Web associé à l’abonnement. C’est une mesure de sécurité importante qui garantit que les clients ne peuvent pas utiliser les tâches planifiées pour compromettre le fonctionnement du serveur ou accéder aux fichiers appartement à l’administrateur Plesk ou à d’autres clients.

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

La raison principale pour laquelle vous pourriez souhaiter modifier le shell par défaut pour les tâches planifiées est de donner à tout le monde sur le serveur la possibilité d’exécuter des commandes via des tâches planifiées qui aient accès à l’ensemble du système de fichiers du serveur.

Si vous ne partagez le serveur avec personne, ou si vous faites confiance aux autres titulaires, vous pouvez sélectionner un shell non chrooté pour les tâches planifiées. Si vous souhaitez utiliser un shell non chrooté pour les tâches planifiées, mais avez des doutes sur celui que vous devez choisir, sélectionnez « /bin/bash ».

Sur un serveur d’hébergement partagé, nous vous conseillons de laisser le shell par défaut pour les tâches planifiées configuré sur « /bin/bash (chrooted) ». Si un de vos clients a besoin d’un shell non chrooté pour ses tâches planifiées, vous pouvez le lui accorder pour un abonnement, sur une base par abonnement.

Avertissement: Accorder à un client l’accès à un autre shell que « /bin/bash (chrooted) » lui donne la possibilité d’exécuter des fichiers binaires et des fichiers d’accès ainsi que des données qui ne lui appartiennent pas. C’est un risque pour la sécurité qui peut conduire le serveur à faire l’objet d’une attaque.

Paramétrer le shell par défaut pour les tâches planifiées

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

Sinon, vous pouvez aussi vous connecter au serveur via ssh et exécuter la commande suivante :

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

<shell> représente le shell souhaité. Par exemple :

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

Empêcher l’utilisation de tâches planifiées « Exécuter une commande »

Si vous pensez qu’un de vos clients a créé une tâche planifiée réalisant une activité malveillante sur le serveur (par exemple qui envoie des spams), vous pouvez désactiver toutes les tâches planifiées « Exécuter une commande » pendant que vous faites des recherches.

Connectez-vous au serveur Plesk via ssh et exécutez la commande suivante

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

pour configurer le shell par défaut pour les tâches planifiées sur « /bin/false ». Cela provoque l’échec de toutes les tâches planifiées « Exécuter une commande » créées par les clients.

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

Configurer un shell personnalisé pour un abonnement spécifique

Pour configurer un shell personnalité pour un abonnement spécifique, suivez ces étapes :

  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.

Toutes les tâches planifiées « Exécuter une commande » pour cet abonnement utiliseront le shell sélectionné.

Permettre à un client de configurer un shell personnalisé pour son abonnement

Pour permettre à un client de configurer un shell personnalisé pour un de ces abonnements, suivez ces étapes :

  1. Allez sous Abonnements, cliquez sur l’abonnement souhaité, puis cliquez sur Personnaliser.
  2. Sur l’onglet « Droits », cochez les cases « Gestion des paramètres d’hébergement » et « Configuration des options des scripts Web potentiellement dangereux qui vont à l’encontre de la politique du fournisseur », puis cliquez sur Mettre à jour & Verrouiller.

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.

Trouver quel shell est utilisé par un abonnement

Pour trouver quel shell est utilisé pour les tâches « Exécuter une commande » d’un abonnement, suivez ces étapes :

  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. Connectez-vous au serveur Plesk via ssh et exécutez la commande suivante :
crontab -u <system user name> -l | grep SHELL