【问题标题】:PHP exec sudo script not working despite having sudo rights尽管具有 sudo 权限,PHP exec sudo 脚本仍无法正常工作
【发布时间】:2016-07-20 16:03:47
【问题描述】:

我的 php 脚本:

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);


exec('sudo /path/to/script.sh');
?>

我的 visudo 行

www-data        ALL=NOPASSWD: /path/to/script.sh

(我检查了每条路径三倍)

如果我删除 exec() 中的“sudo”,它将执行(我在开头放了一个 touch aaa,使用 sudo 甚至没有创建文件,因此脚本甚至没有开始执行)。该脚本对每个人都有执行权限。

我无法获得任何错误输出。我无法 su 进入 www-data 以尝试使用 sudo 手动启动它(当我 su 我得到“此帐户当前不可用。 ",但我想这是正常行为)。

【问题讨论】:

    标签: php linux exec sudo


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

    2. 提供sudo 的完整路径。虽然您的 shell 可能在其路径中包含它,但您的 Web 服务器可能没有。

    【讨论】:

      【解决方案2】:

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

      sudo -u www-data script.sh
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-03
        • 2014-12-06
        • 2014-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多