note 56274 added to function.exec
| From: | p dot koeman at wittenborg-university dot com | Date: | Mon, 29 Aug 2005 13:22:07 +0000 |
| Subject: | note 56274 added to function.exec | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-94336@lists.php.net to get a copy of this message | ||
Using sudo (http://www.sudo.ws/) to exec system commands from PHP
This is a secure way to use sudo from PHP to perform sysadmin tasks from a php webapplication. (can
be used with exec or passthru)
- Make a PHP script in the WWW root directory : client.php
[/home/mywebdir/html/client.php]
<?
passthru('echo hello world | sudo /usr/bin/php -f /home/server.php');
?>
- Make a PHP script outside the WWW directory : server.php
[/home/server.php]
<?
echo join('',file('php://stdin'));
?>
Add a line to /etc/sudoers
[in /etc/sudoers]
www ALL=(ALL) NOPASSWD: /usr/bin/php -f /home/server.php
Now execute client.php in the webbrowser (as www user)
- client.php will execute sudo
- sudo will execute server.php by php as root !
In server.php you can do everything you like requiring root privileges. BEWARE ! every php script
can now execute server.php, make it secure ! (filter parameters etc.)
I have tested this method and it works !
Kind regards, Pim Koeman
Wittenborg-University, Deventer, the Netherlands
http://www.wittenborg-university.com
----
Manual Page -- http://www.php.net/manual/en/function.exec.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+56274
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+56274&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+56274&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+56274&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+56274&report=yes&reason=useless
Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+56274&report=yes&reason=non-english
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+56274&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+56274&report=yes
Search -- http://master.php.net/manage/user-notes.php