Composer php Composer以root身份运行有哪些风险?

Composer php Composer以root身份运行有哪些风险?,composer-php,webserver,file-permissions,Composer Php,Webserver,File Permissions,我不理解以root用户身份运行的composer与以非root用户身份运行的composer之间的区别。无论您作为什么用户运行,都必须授予对主目录的写访问权,composer在主目录中存储其资产,如vendor、scripts、composer.json和composer.lock 例如,在我的例子中,我的dir结构如下:- .test |-scripts |-composer.json |-scripts |-webroot |-.env 假设我以非root用户的身份运行,但我必须将该用户分

我不理解以root用户身份运行的composer与以非root用户身份运行的composer之间的区别。无论您作为什么用户运行,都必须授予对主目录的写访问权,composer在主目录中存储其资产,如vendor、scripts、composer.json和composer.lock

例如,在我的例子中,我的dir结构如下:-

.test
|-scripts
|-composer.json
|-scripts
|-webroot
|-.env
假设我以非root用户的身份运行,但我必须将该用户分配给
rwx
totestdir,这样每当我运行composer安装时,它都可以创建vendor、composer.lock并读取脚本,并在test dir内执行。
但一旦你给了rwx,它就可以在里面创建任何恶意脚本,或者访问我的env文件。那么,以root或非root身份运行又有什么关系呢

在花了一些时间之后,我了解到composer是一个cli脚本,它使用的是PHP-cli而不是PHP-FPM解释器。PHP-CLI和PHP-FPM都是不同的东西。Web服务器与PHP-FPM对话,而不是与PHP-CLI对话。因此,无论何时调用composer,composer进程都由PHP-CLI所有者拥有

因此,webroot应该归PHP-FPM所有者所有,以使网站正常工作,其中composer.json、vendors等应该归PHP-CLI所有者所有。两个用户应该是不同的。事实测试目录应该可以由PHP-CLI所有者写入,而不能由PHP-FPM进程所有者写入。PHP-FPM通常作为所有者www数据运行