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

Welche Shell wird für die Ausführung von geplanten Aufgaben verwendet?

Die Shell, die für geplante Aufgaben des Typs „Befehl ausführen“ eingesetzt wird, ist an den Systembenutzer des Abonnements gebunden. Das heißt, dass für alle geplanten Aufgaben, die in einem Abonnement erstellt werden, die gleiche Shell verwendet wird. Standardmäßig stimmt die Shell mit der Standard-Shell überein, die in den Servereinstellungen konfiguriert ist, und wird für alle Abonnements auf dem Server verwendet. Es gibt jedoch zwei Ausnahmen dieser Regel:

In beiden Fällen wird für geplante Aufgaben des Typs „Befehl ausführen“ in einem Abonnement die angepasste Shell und nicht die Standard-Shell verwendet.

Warum kann eine andere Shell verwendet werden?

In der Regel wird die Shell /bin/bash (chrooted) als Standard-Shell für geplante Aufgaben konfiguriert. So haben Befehle, die über geplante Aufgaben ausgeführt werden, nur Zugriff auf Dateien im Webspace, der mit dem Abonnement verknüpft ist. Dies ist eine wichtige Sicherheitsmaßnahme, mit der sichergestellt wird, dass Kunden geplante Aufgaben nicht dazu einsetzen, um die Vorgänge des Servers zu unterbrechen, und nicht auf Dateien des Plesk Administrators oder anderer Kunden zugreifen können.

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

Der Hauptgrund, die Standard-Shell für geplante Aufgaben nicht zu verwenden, ist, es allen Nutzern auf dem Server zu ermöglichen, Befehle über geplante Aufgaben auszuführen, mit denen auf das komplette Dateisystem des Servers zugegriffen werden kann.

Wenn Sie den Server nicht mit anderen Nutzern teilen oder Sie den anderen Mandanten vertrauen, können Sie eine Shell ohne Chroot für geplante Aufgaben auswählen. Wenn Sie sich nicht sicher sind, welche Shell ohne Chroot Sie für geplante Aufgaben auswählen sollen, verwenden Sie /bin/bash.

Auf einem gemeinsam genutzten Server empfehlen wir, die standardmäßig ausgewählte Shell für geplante Aufgaben /bin/bash (chrooted) beizubehalten. Falls einer Ihrer Kunden eine Shell ohne Chroot für seine geplanten Aufgaben benötigt, können Sie dies individuell für einzelne Abonnements gewähren.

Warnung: Wenn Sie einem Kunden Zugriff auf andere Shells als /bin/bash (chrooted) geben, kann dieser Binärdateien ausführen und auf Dateien und Daten zugreifen, die nicht ihm gehören. Dies ist ein Sicherheitsrisiko und kann dazu führen, dass ein Server kompromittiert wird.

Festlegen der Standard-Shell für geplante Aufgaben

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

Oder Sie können sich über SSH im Server anmelden und den folgenden Befehl ausführen:

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

Geben Sie dabei die gewünschte Shell unter <Shell> ein. Zum Beispiel:

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

Verhindern der Ausführung von geplanten Aufgaben des Typs „Befehl ausführen“

Wenn Sie glauben, dass einer Ihrer Kunden eine geplante Aufgabe erstellt hat, mit der schadhafte Aktivitäten auf dem Server vorgenommen werden (zum Beispiel das Senden von Spam), können Sie alle geplanten Aufgaben des Typs „Befehl ausführen“ deaktivieren, bis Sie den Hintergrund ausgeforscht haben.

Melden Sie sich über SSH im Plesk Server an und führen Sie den folgenden Befehl aus:

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

Damit wird /bin/false als Standard-Shell für geplante Aufgaben festgelegt. Alle geplanten Aufgaben des Typs „Befehl ausführen“, die von Kunden erstellt werden, schlagen somit fehl.

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

Festlegen einer benutzerdefinierten Shell für ein einzelnes Abonnement

So legen Sie eine benutzerdefinierte Shell für ein einzelnes Abonnement fest:

  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.

Die ausgewählte Shell wird für alle geplanten Aufgaben des Typs „Befehl ausführen“ im Abonnement eingesetzt.

Zulassen, dass ein Kunde eine benutzerdefinierte Shell für sein Abonnement festlegt

So lassen Sie zu, dass ein Kunde eine benutzerdefinierte Shell für eines seiner Abonnements festlegt:

  1. Gehen Sie zu Abonnements, klicken Sie auf das gewünschte Abonnement und dann auf Anpassen.
  2. Aktivieren Sie auf dem Tab „Berechtigungen“ die Kontrollkästchen „Verwaltung der Hosting-Einstellungen“ und „Einrichtung potenziell unsicherer Webskripting-Optionen, die die Richtlinien des Providers außer Kraft setzen“ und klicken Sie dann auf Aktualisieren & sperren.

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.

Überprüfen, welche Shell für ein Abonnement verwendet wird

Führen Sie diese Schritte aus, um herauszufinden, welche Shell für geplante Aufgaben des Typs „Befehl ausführen“ in einem Abonnement eingesetzt wird:

  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. Melden Sie sich über SSH im Plesk Server an und führen Sie den folgenden Befehl aus:
crontab -u <system user name> -l | grep SHELL