尽管有sudo权限,PHP exec sudo脚本仍无法正常工作

时间:2016-07-20 16:03:47

标签: php linux exec sudo

我的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;,但我猜这是正常的行为)。

2 个答案:

答案 0 :(得分:1)

  1. 如果您的系统启用了selinux或其他基于策略的访问控制引擎,则您的Web服务器进程将在受限制的上下文中运行,从而进一步限制权限。验证您是否启用了selinux。

  2. 提供sudo的完整路径。虽然你的shell可能在它的路径中有它,但也许你的web服务器没有。

答案 1 :(得分:0)

1 - 如果您正在使用RHEL / CentOS且路径位于/ root路径下,则无法执行它。
2 - 检查scrit是否有'x'标志(chmod + x /path/to/script.sh)
3 - 检查用户ww-data是否可以使用

执行scrit
sudo -u www-data script.sh