通过php-shell_exec执行bash脚本时出现权限错误


Permission error by execute bash script via php shell_exec

我尝试通过bash script/etc/ppp/chap-secret文件插入应该使用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:拒绝的权限

从终端所有的工作都很好,但我需要它从管理网站通过按钮点击。

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

授予web服务器访问系统文件的权限看起来确实很鲁莽,但至少您使用了包装脚本来防止服务器以超级用户权限运行任意命令。话虽如此:

您已在没有密码的情况下授予www-data sudo对/etc/ppp/test.sh的访问权限,但您没有使用shell_exec函数中的sudo执行命令。

调用shell_exec("cd /etc/ppp;sudobash test.sh");就可以了。