我的php脚本:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
exec('sudo /path/to/script.sh');
?>
我的视觉线
www-data ALL=NOPASSWD: /path/to/script.sh
(我检查了每条路径三倍)
如果我删除&#39; sudo&#39;在exec()中它将执行(我在开始时放置一个touch aaa
,sudo文件甚至没有被创建,所以脚本甚至没有开始执行)。该脚本拥有每个人的执行权。
我无法获得任何错误输出。我无法进入www-data尝试使用sudo手动启动它(当我得到&#34时;此帐户目前无法使用。 &#34;,但我猜这是正常的行为)。
答案 0 :(得分:1)
如果您的系统启用了selinux或其他基于策略的访问控制引擎,则您的Web服务器进程将在受限制的上下文中运行,从而进一步限制权限。验证您是否启用了selinux。
提供sudo
的完整路径。虽然你的shell可能在它的路径中有它,但也许你的web服务器没有。
答案 1 :(得分:0)
1 - 如果您正在使用RHEL / CentOS且路径位于/ root路径下,则无法执行它。
2 - 检查scrit是否有'x'标志(chmod + x /path/to/script.sh)
3 - 检查用户ww-data是否可以使用
sudo -u www-data script.sh