为什么我可以运行 PHP sudo 命令?

时间:2021-02-16 00:16:04

标签: php ubuntu nginx

我有一个执行以下操作的 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

1 个答案:

答案 0 :(得分:3)

当您运行 php /var/www/html/script.php 时,您在当前用户(最有可能在 php 组中)下运行 sudoers 进程。

Ubuntu 默认 sudo 密码超时为 15 分钟。这意味着,如果您的用户(也运行 PHP 脚本的用户)在 15 分钟前输入了 sudo 密码,系统将不会再次要求输入。