【问题标题】:How to execute shell scripts from php that requires root permissions?如何从需要root权限的php执行shell脚本?
【发布时间】:2016-10-31 06:16:15
【问题描述】:

每次我执行脚本时:

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

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

我该如何解决这个问题?

更新:

按照下面评论的建议,我运行这个脚本:

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

【问题讨论】:

  • 在错误调试模式下像这样执行 if(exec(" sh /path/to/file.sh 2>&1", $output, $return_var)){ print_r($output); print_r($return_var); } 并知道错误
  • 您是否尝试将 SUID 添加到您的脚本文件中?
  • @KoalaYeung,对不起,我不明白你的意思,我是 linux 新手,我该怎么做?
  • 这个答案可能对stackoverflow.com/a/5711685/5788489有帮助

标签: php shell


【解决方案1】:

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

chmod u+s <your_script>

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

【讨论】:

    猜你喜欢
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 2011-05-09
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多