• If you are still using CentOS 7.9, it's time to convert to Alma 8 with the free centos2alma tool by Plesk or Plesk Migrator. Please let us know your experiences or concerns in this thread:
    CentOS2Alma discussion

Resolved Run bash script as root from extension

a_guy

New Pleskian
Hello,

What is the recommended way (security wise) to launch a bash script as root from a Plesk extension from customer UI?

Thanks
 
Be careful about user input validation - the ideal way is pm_Cli's callSbin function, which will escalate a script's permissions to root
 
Be careful about user input validation - the ideal way is pm_Cli's callSbin function, which will escalate a script's permissions to root

I assume you mean pm_ApiCli::callSbin.
The script runs as psaadm, shouldn't it run as root?

IndexController.php:

Code:
<?php
class IndexController extends pm_Controller_Action
{

    public function myTestAction()
    {
        $result = pm_ApiCli::callSbin("myscript.sh");
        $this->redirect('index/index');
    }
}

/usr/local/psa/admin/bin/modules/my-plugin/myscript.sh:

Code:
#!/bin/bash

systemctl stop fail2ban.service &> /tmp/mytest.txt
whoami >> /tmp/mytest.txt


and the result

Code:
[root@plesk ~]# cat /tmp/mytest.txt
Failed to stop fail2ban.service: Interactive authentication required.
See system logs and 'systemctl status fail2ban.service' for details.
psaadm

Thanks
 
Yeah, sorry.

You have to put it in the /sbin folder in your plugin. Take a look at the example extensions
 
I assume that on extension installation the sbin symlink should be created, in post-install.php.

Is there any sample code of creating a symlink from PHP using Plesk API?

Thank.
 
Back
Top