通過Plesk for Linux客戶可以創建在伺服器上運行命令的計畫任務。使用的shell 決定了計畫任務能夠存取的檔案系統的區域。預設存取僅限於客戶的主機空間。但是Plesk 管理員可對其進行修改。

Note: 如果您對shell不熟悉,建議在更改本小節中的設定之前對其進行瞭解。

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

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

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

為何要使用其它的shell?

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

Note: 該設定會影響伺服器上的所有訂閱,包括Plesk管理員所有的訂閱。不會影響由Plesk管理員在 工具與設定 > 計畫的任務 中創建的並配置在 root 用戶下運行的 計畫任務

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

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

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

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

為計畫任務設定默認的 shell

若要設定默認用於運行所有」運行命令」的計畫任務的shell,請進入 工具與設定 > 計畫的任務 > 設定 從功能表中選擇所需的 shell。

image-78099.png

此外,您可以通過 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」。這樣會令客戶創建的所有」運行命令」 計畫任務執行失敗。

Note: 有許可權選擇其它shell的客戶可以在 網站與域名 > 主機存取 中為其訂閱選擇其它的shell來覆蓋此設定。

為單個訂閱設定自訂 shell

若要為單個訂閱設定自訂 shell,請如下操作:

  1. 進入 訂閱 ,點按所需的訂閱,然後點按 主機存取
  2. 從」通過SSH存取伺服器」 功能表選擇所需的shell並點按 確定

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

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

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

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

這樣則給以了客戶在 網站與域名 > 主機存取 中選擇其它shell 的許可權。如果客戶選擇了其它shell,其訂閱所有的」運行命令」 計畫任務都將使用選定的shell。

查找訂閱所使用的shell

若要查找某個訂閱的」運行命令」計畫任務所使用的shell,請如下操作:

  1. 查找訂閱的系統使用者的用戶名。進入 訂閱 ,點按所需訂閱,點按 主機存取 ,然後查找」用戶名」 欄位。
  2. 通過ssh登入到Plesk伺服器並運行以下命令:
crontab -u <system user name> -l | grep SHELL