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

Quale shell viene utilizzata per l’esecuzione di attività pianificate?

La shell utilizzata per le attività pianificate «Esegui un comando» dipende dall’utente di sistema dell’abbonamento (ovvero, tutte le attività pianificate create in un abbonamento condividono la stessa shell). Per impostazione predefinita, corrisponde alla shell predefinita configurata nelle impostazioni del server e utilizzata per tutti gli abbonamenti del server. Tuttavia, esistono due eccezioni alla regola:

In entrambi i casi, le attività pianificate «Esegui un comando» create nell’ambito dell’abbonamento utilizzano la shell personalizzata, anziché quella predefinita.

Perché utilizzare una shell diversa?

Per impostazione predefinita, la shell «/bin/bash (chrooted)» è configurata come predefinita per le attività pianificate. In questo modo, i comandi eseguiti dalle attività pianificate possono accedere solo ai file contenuti nello spazio web associato all’abbonamento. Si tratta di un’importante misura di sicurezza, che garantisce che i clienti non possano utilizzare attività pianificate per interrompere il funzionamento del server o accedere ai file appartenenti all’amministratore di Plesk o ad altri clienti.

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

Il motivo principale per cui può essere opportuno modificare la shell predefinita per le attività pianificate è fornire a tutti, sul server, la capacità di eseguire comandi tramite attività pianificate che abbiano accesso all’intero file system del server.

Se non condividi il server con altri, o se ritieni gli altri tenant affidabili, puoi selezionare una shell non chrooted per le attività pianificate. Se desideri utilizzare una shell non chrooted per le attività pianificate, ma non sei sicuro di quale scegliere, seleziona «/bin/bash».

Su un server di hosting condiviso, si consiglia di lasciare la shell predefinita per le attività pianificate impostata su «/bin/bash (chrooted)». Se un cliente richiede una shell non chrooted per le proprie attività pianificate, puoi concederla in base ai singoli abbonamenti.

Avvertimento: se si permette a un cliente di accedere a una shell diversa da «/bin/bash (chrooted)», il cliente potrà eseguire file binari e accedere a file e dati che non gli appartengono. Ciò rappresenta un rischio per la sicurezza e può condurre alla compromissione del server.

Impostare la shell predefinita per le attività pianificate

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

In alternativa, puoi accedere al server tramite ssh ed eseguire questo comando:

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

Dove <shell> è la shell desiderata. Ad esempio:

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

Impedire l’uso di attività pianificate «Esegui un comando»

Se ritieni che un cliente abbia creato un’attività pianificata che potrebbe eseguire operazioni nocive sul server (ad esempio, inviare spam), durante le tue indagini puoi disattivare tutte le attività pianificate «Esegui un comando».

Accedi al server Plesk tramite ssh ed esegui questo comando:

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

per impostare la shell predefinita per le attività pianificate su «/bin/false». In questo modo si impedisce il funzionamento di tutte le attività pianificate «Esegui un comando» create dai clienti.

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

Impostare una shell personalizzata per un abbonamento singolo

Per impostare una shell personalizzata per un abbonamento singolo, procedi come segue:

  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.

Tutte le attività pianificate «Esegui un comando» per questo abbonamento utilizzeranno la shell selezionata.

Consentire a un cliente di impostare una shell personalizzata per il proprio abbonamento

Per consentire a un cliente di impostare una shell personalizzata per uno dei propri abbonamenti, procedi come segue:

  1. Accedi ad Abbonamenti, fai clic sull’abbonamento desiderato, quindi su Personalizza.
  2. Nella scheda «Autorizzazioni», seleziona le caselle di controllo «Gestione delle impostazioni di hosting» e «Configurazione di opzioni di scripting web potenzialmente non affidabili che sovrascrivono le norme sul provider», quindi fai clic su Aggiornamento & Blocco.

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.

Individuare quale shell viene utilizzata da un abbonamento

Per individuare la shell utilizzata per le attività pianificate «Esegui un comando» di un abbonamento, procedi come segue:

  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. Accedi al server Plesk tramite ssh ed esegui questo comando:
crontab -u <system user name> -l | grep SHELL