如何从需要root权限的php执行shell脚本?

时间:2016-10-31 06:16:15

标签: php shell

每次我执行脚本时都会执行:

exec('sudo profile status-koneksi',$status);
print_r($status);

它总是什么都不做,我不知道如何调试这个,我的脚本需要root权限,所以我将以下行添加到/etc/sudoers文件中:

Cmnd_Alias ANGEL_BEATS = /usr/bin/profile, /usr/bin/socks, /usr/bin/gsm, /usr/bin/gssh, /usr/bin/ping_loop, /usr/bin/restart-openvpn, /usr/bin/sms.py, /usr/bin/sms_gateway, /usr/bin/socks, /usr/bin/ussd.py, /usr/bin/vpn, /usr/bin/wgetui
ab ALL=NOPASSWD: ANGEL_BEATS
%ab ALL=NOPASSWD: ANGEL_BEATS

但是,当我从终端执行命令时,它工作得很好: enter image description here

我该如何解决这个问题?

更新

正如下面的评论所示,我运行此脚本:

if(exec("sudo sh /usr/bin/profile status-koneksi 2>&1", $output, $return_var)){ print_r($output); print_r($return_var); }

它返回:

Array ( [0] => sudo: no tty present and no askpass program specified ) 1

1 个答案:

答案 0 :(得分:0)

由于您的脚本需要root权限才能运行,因此如果您可以设置setuid位,那将会很不错。试试这个:

chmod u+s <your_script>

更多信息here(来自维基百科)