通过php shell_exec

时间:2016-04-07 12:57:53

标签: php linux bash sed shell-exec

我尝试通过/etc/ppp/chap-secretbash script文件插入php shell_exec文件。

我希望我在正确的方式或是否有更好的方式? 无论我的工作如何,

/var/www/test.php:

<?php echo shell_exec("cd /etc/ppp; bash test.sh"); ?>

/etc/ppp/test.sh:

#!/bin/bash
sed -i "/IP addresses/a client123* pw123123 192.168.0.101" chap-secrets

我还添加了www-data ALL=NOPASSWD: /etc/ppp/test.sh to sudoers.

我得到了error

  

sed:无法打开临时文件./sedXym2Nn:权限被拒绝

来自终端的

一切正常,但我需要通过管理员网页点击按钮。

如何修复权限错误并获取此过程?

1 个答案:

答案 0 :(得分:0)

授予Web服务器对系统文件的访问权限肯定是鲁莽的,但至少您使用包装器脚本来阻止服务器以超级用户权限运行任意命令。话虽如此:

您没有密码就已www-data sudo访问/etc/ppp/test.sh,但您没有使用shell_exec函数中的sudo执行命令。

调用shell_exec("cd /etc/ppp; sudo bash test.sh");应该可以解决问题。