【发布时间】:2021-02-16 16:10:44
【问题描述】:
我有一个执行以下操作的 PHP 脚本:
$output = exec('sudo nginx -t 2>&1');
echo $output;
正如预期的那样,由于使用了sudo 命令,它返回以下内容:
sudo: no tty present and no askpass program specified
但是,我可以在终端 php /var/www/html/script.php 中运行 PHP,并且它可以在不提示输入 sudo 密码的情况下运行。
有人告诉我,我在我的系统上以 root 身份运行 PHP,这很危险。
然而,我所做的只是关注这个tutorial - 真的有那么危险吗?
另外,如果我使用 Cron 作业 来运行 PHP 脚本,它会完美运行
我在 Ubuntu 20.04 + PHP 7 上使用 NGINX
【问题讨论】:
-
PHP 以网络服务器用户身份运行,并且无法提示输入没有 tty 或 askpass 的密码。在终端中,您以您登录的任何用户身份运行它。
-
@AbraCadaver 从普通用户帐户(不是root)运行它并且没有
sudo命令使其工作。此外,如果我设置了一个 Cron 作业来运行该 PHP 脚本,那也可以 - 这是预期的吗?还是因为我的 PHP 以 root 身份运行,这应该是危险的 -
如果你只做
exec('/path/to/nginx -t 2>&1')会发生什么