How to execute a simple Linux cmdline with PHP -
i want execute simple commands via network , process results php.
environment: linux mint 18 cinnamon 64 bit vers. 3.0.6 (linux kernel 4.4.0-21-generic)
opt/lampp/htdocs/cmd.php
<?php //error_reporting(0); error_reporting(e_all ^ e_notice); // execute cmdline $output = array(); exec('/usr/bin/sudo /var/sudowebscript.sh cmd=ifconfig', $output, $return_var); echo $return_var; $response = $_get["callback"]."(".json_encode($output).")"; echo $response; ?>
/opt/lampp/etc/php.ini
; safe mode ; http://php.net/safe-mode safe_mode=off
/var/sudowebscript.sh
#!/bin/bash # # sudo web script allowing user www-data run commands root privilegs case "$1" in cmd=iwconfig) /sbin/iwconfig ;; cmd=ifconfig) /sbin/ifconfig ;; *) echo "error: invalid parameter: $1 (for $0)"; exit 1 ;; esac exit 0
sudo visudo entry
# allow members of group sudo execute command %sudo all=(all:all) www-data all=(all) nopasswd: /var/sudowebscript.sh
permissions
-rwxrwxrwx 1 gerhard gerhard 274 nov 7 17:03 /var/sudowebscript.sh
user grouping (not sure if relevant ...)
gerhard@gerhard-thinkpad-t400 ~ $ groups root root : root gerhard@gerhard-thinkpad-t400 ~ $ groups gerhard gerhard : gerhard adm cdrom sudo dip www-data plugdev lpadmin sambashare gerhard@gerhard-thinkpad-t400 ~ $ groups www-data www-data : www-data
exec statement in cmd.php returns rc = 1 , nothing happens
i guess missing ...
just noticed works without sudo (rc= 0 , $output populated)
exec('/var/sudowebscript.sh cmd=ifconfig', $output, $return_var);
but original intention execute cmd's requiring root privileges. (the ifconfig simple example here) therefore .sh , keeping security in mind ...
maybe interesting. setup outlined above sudo works perfect on debian (raspberry) system. rebooting.
on debian must have setup, forgot here. ideas ?
Comments
Post a Comment