为什么我会看到“不要以 root/超级用户身份运行 Composer”警告/错误?

hrs, 15 七月, 2023

由于下面详述的原因,始终不鼓励以 root 身份运行 Composer。

从 Composer 2.4.2 开始,当以 root 身份运行时,插件会自动禁用,并且没有迹象表明用户有意识地这样做。有两种方式可以给予用户同意:

如果您以交互方式运行,Composer 将提示您是否确定要继续以 root 身份运行。如果您以非交互方式运行,插件将被禁用,除非..
如果您将COMPOSER_ALLOW_SUPERUSER环境变量设置为1,这也表明您打算以 root 身份运行 Composer 并接受这样做的风险。
以超级用户或 root 身份运行 Composer 是否安全?#
某些 Composer 命令,包括exec、install、 和update允许第三方代码在您的系统上执行。这是来自它的“插件”和“脚本”功能。插件和脚本对运行 Composer 的用户帐户具有完全访问权限。因此,强烈建议避免 以超级用户/root 身份运行 Composer。所有命令还会调度可由插件捕获的事件,因此除非明确禁用,否则每个 Composer 命令都会加载/执行已安装的插件。

您可以在软件包安装或更新过程中使用以下语法禁用插件和脚本,以便仅执行 Composer 的代码,而不会执行第三方代码:

php composer.phar install --no-plugins --no-scripts ...
php composer.phar update --no-plugins --no-scripts ...


根据操作系统的不同,我们见过可以使用特制的composer.json. 因此,一般来说,如果您确实想安装不受信任的依赖项,您应该将它们完全沙箱在容器或等效容器中。

另请注意,该exec命令将始终以运行的用户身份运行第三方代码composer。

有关如何禁用警告的详细信息,请参阅COMPOSER_ALLOW_SUPERUSER环境变量。

标签

评论