星期一, 3月 26, 2012

PHP 利用 sudo 執行 shell 指令 (shell_exec,exec,passthru,system)

!注意! 此方法可能有安全性隱憂,請慎用!

FreeBSD 需先透過 ports 安裝 sudo ( /usr/ports/security/sudo )

使用 visudo 修改 sudoers 設定檔 ( 或是直接編輯 /etc/sudoers )

ex:
apache 執行 任何 指令時,無須密碼
apache ALL = NOPASSWD: ALL

apache 執行 /root/SOME_SCRIPT 指令時,無須密碼,其餘不變
apache ALL = NOPASSWD: /root/SOME_SCRIPT

php ex:
$output = shell_exec("/usr/bin/sudo /root/SOME_SCRIPT");
echo $output;

P.S. 如遇 "sudo: sorry, you must have a tty to run sudo" 錯誤,可在 sudoers 中,將 Defaults requiretty 註解即可!

沒有留言: