通过PHP exec运行SUDO?
可能重复:通过PHP exec运行SUDO?,php,python,ubuntu,Php,Python,Ubuntu,可能重复: 我有一个Python文件,需要SU权限才能运行(在Ubuntu服务器上)。 不知道怎么做 从PHP运行它,如下所示: $command = "python /path/to/my/file.py params"; $temp = exec($command, $output); var_dump($output); 不工作。(对于非根目录,Xvfb无法启动) 尝试: $command = "echo 'root_pwd' | sudo -S python /program.py
我有一个Python文件,需要SU权限才能运行(在Ubuntu服务器上)。
不知道怎么做 从PHP运行它,如下所示:
$command = "python /path/to/my/file.py params";
$temp = exec($command, $output);
var_dump($output);
不工作。(对于非根目录,Xvfb无法启动)
尝试:
$command = "echo 'root_pwd' | sudo -S python /program.py params"
...
没用
已尝试:编辑/etc/sudoers:
Cmnd_Alias BUNDLE = /path/to/myprog.py
nobody ALL=(ALL) NOPASSWD:BUNDLE
然后:
$command = "sudo -u nobody python myprog.py params";
...
不起作用。当我说“没有工作”时,我的意思是var_dump($output)返回空数组,在服务器上没有成功的结果(myprog.py应该在服务器上生成一个文件),或者页面只是加载几分钟直到超时。
基本.py文件(不需要特殊权限)可以正常工作。
请帮忙 附言: .Py文件正在制作URL的屏幕截图,使用webkitgtk、Xvfb和其他一些东西也是如此。您的命令是:
$command = "sudo -u nobody python myprog.py params";
这里您直接调用python解释器,但在sudores
文件中,您只允许/path/to/myprog.py
如果您想这样做,那么在python程序中添加一个shebang并使其可执行,然后将命令更改为
$command = "sudo -u nobody /path/to/myprog.py params";
但要使其工作,您在sudoers文件中指定的用户必须是执行命令的用户,该用户可能不是nobody
,而是web服务器进程(www-data
?):
你试过的另一种方法
$command = "echo 'root_pwd' | sudo -S python /program.py"
可能失败的原因有两个:
- 当前用户(可能是Web服务器进程)不允许sudo
不接受根密码,而是当前用户密码sudo
requirety
指令,该指令防止非用户终端进程调用sudo
。禁用requirety
可能会让您的运气更好,但我强烈建议您咨询serverfault.com,以获得正确的设置方法。您可能会严重破坏系统的安全性。。。
$command = "echo 'root_pwd' | sudo -S python /program.py"