通过Plesk for Linux客户可以创建在服务器上运行命令的计划任务。使用的shell 决定了计划任务能够访问的文件系统的区域。默认访问仅限于客户的主机空间。但是Plesk 管理员可对其进行修改。

注解: 如果您对shell不熟悉,建议在更改本小节中的设置之前对其进行了解。

哪个shell 用于运行计划任务?

用于”运行命令” 计划任务的shell 与订阅的系统用户相关(也就是说某个订阅下的所有计划任务都共享相同的 shell)。默认会匹配在服务器设置中配置的且用于服务器上所有订阅的默认shell。但是仍有两个例外:

以上两种情况,在订阅下创建的”运行命令” 计划任务都将使用自定义的 shell 而不是默认的。

为何要使用其它的shell?

默认会将”/bin/bash (chrooted)” shell 配置为计划任务的默认shell。这样设置,计划任务所运行的命令则只能访问与订阅相关联的主机空间内的文件。这是很重要的安全举措,因为可以确保客户无法使用计划任务来干扰服务器的操作运行或访问属于Plesk管理员或其他客户的文件。

注解: 该设置会影响服务器上的所有订阅,包括Plesk管理员所有的订阅。不会影响由Plesk管理员在 工具与设置 > 计划的任务 中创建的并配置在 root 用户下运行的 计划任务

您会为计划任务更改默认的shell的主要原因有可能是,让服务器上的每个用户都可以通过访问服务器上整个文件系统的计划任务来运行命令。

如果您不与任何人分享服务器,或者您信任其它的租户,则可以为计划任务 选一个非 chrooted shell 。如果您希望计划任务使用一个非 chrooted shell 但是又不确定选择哪一个,可选择 “/bin/bash”。

在虚拟主机服务器上,我们建议将计划任务的默认 shell 保持设置为 “/bin/bash (chrooted)”。如果您的某一个客户需要为其计划任务设置一个非 chrooted shell,则可以订阅为基础 允许 其某个订阅使用该设置。

警告: 允许客户访问任何其它的 shell 而非 “/bin/bash (chrooted)”,客户则可以执行二进制文件和访问本不属于他们的文件和数据。这存在一定安全风险,服务器可能会受影响。

为计划任务设置默认的 shell

若要设置默认用于运行所有”运行命令”的计划任务的shell,请进入 工具与设置 > 计划的任务 > 设置 从菜单中选择所需的 shell。

image 78099

此外,您可以通过 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”。这样会令客户创建的所有”运行命令” 计划任务执行失败。

注解: 有权限选择其它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