概要: 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.

哪個shell 用於運行計畫任務?

用於」運行命令」 計畫任務的shell 與訂閱的系統使用者相關(也就是說某個訂閱下的所有計劃任務都共用相同的 shell)。預設會匹配在伺服器設定中配置的且用於伺服器上所有訂閱的默認shell。但是仍有兩個例外:

以上兩種情況,在訂閱下創建的」運行命令」 計畫任務都將使用自訂的 shell 而不是默認的。

為何要使用其它的shell?

默認會將」/bin/bash (chrooted)」 shell 配置為計畫任務的預設shell。這樣設定,計畫任務所運行的命令則只能存取與訂閱相關聯的主機空間內的檔。這是很重要的安全舉措,因為可以確保客戶無法使用計畫任務來幹擾伺服器的操作運行或存取屬於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.

您會為計畫任務更改默認的shell的主要原因有可能是,讓伺服器上的每個用戶都可以通過存取伺服器上整個檔案系統的計畫任務來運行命令。

如果您不與任何人分享伺服器,或者您信任其它的租戶,則可以為計畫任務 選一個非 chrooted shell 。如果您希望計畫任務使用一個非 chrooted shell 但是又不確定選擇哪一個,可選擇 「/bin/bash」。

在虛擬主機伺服器上,我們建議將計畫任務的默認 shell 保持設定為 「/bin/bash (chrooted)」。如果您的某一個客戶需要為其計畫任務設定一個非 chrooted shell,則可以訂閱為基礎 允許 其某個訂閱使用該設定。

警告: 允許客戶存取任何其它的 shell 而非 「/bin/bash (chrooted)」,客戶則可以執行二進位檔案和存取本不屬於他們的檔和資料。這存在一定安全風險,伺服器可能會受影響。

為計畫任務設定默認的 shell

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> 是所需的 shell。例如:

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

阻止使用」運行命令」 計畫任務

如果您認為您的某個客戶已創建了一個會在伺服器上執行惡意行為的計畫任務(例如,發送垃圾郵件),您可以在調查時禁用所有的 「運行命令」 計畫任務。

通過ssh登入到Plesk伺服器並運行以下命令:

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

將計畫任務的默認 shell 設定為 「/bin/false」。這樣會令客戶創建的所有」運行命令」 計畫任務執行失敗。

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

為單個訂閱設定自訂 shell

若要為單個訂閱設定自訂 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.

該訂閱所有的 「運行命令」 計畫任務都將使用選定的 shell。

允許客戶為其訂閱設定自訂 shell

若要允許客戶為其訂閱設定自訂 shell,請如下操作:

  1. 進入 訂閱 ,點按所需的訂閱,然後點按 自訂
  2. 在」許可權」 標籤上,勾選 「主機設定管理」 和 「設定存在安全隱患的 web 腳本選項(會覆蓋提供商策略)」 核取方塊,然後點按 更新並鎖定

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.

查找訂閱所使用的shell

若要查找某個訂閱的」運行命令」計畫任務所使用的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. 通過ssh登入到Plesk伺服器並運行以下命令:
crontab -u <system user name> -l | grep SHELL