Php 不要以超级root用户身份运行composer安装

Php 不要以超级root用户身份运行composer安装,php,composer-php,root,sudo,Php,Composer Php,Root,Sudo,我想制作一个.sh文件,用于将网页从github自动部署到生产环境。我需要在其中运行composer安装,但当我运行它时,它向我发出警告:不要以超级root用户身份运行composer安装!据了解,这是因为安全原因。但我还需要运行其他命令,例如删除一些文件和目录 我找到的解决方案是: composer install --no-scripts --no-interaction 问题是:这足够吗?--no script是否是解决方案?最佳做法是什么?以有权删除您所说的“文件和文件夹”的用户身份运

我想制作一个.sh文件,用于将网页从github自动部署到生产环境。我需要在其中运行composer安装,但当我运行它时,它向我发出警告:不要以超级root用户身份运行composer安装!据了解,这是因为安全原因。但我还需要运行其他命令,例如删除一些文件和目录

我找到的解决方案是:

composer install --no-scripts --no-interaction

问题是:这足够吗?
--no script
是否是解决方案?最佳做法是什么?

以有权删除您所说的“文件和文件夹”的用户身份运行。 如果这样的用户不存在,请创建一个,分配所有权/权限,然后在该用户下运行
composer


仅仅以
根目录运行它
来删除少数已知文件夹是一个薄弱的论点。

最佳实践是根本不使用
sudo
来执行composer命令。如果composer需要
sudo
,它通常会指出项目的文件权限设置不正确

例如,您应该有一个拥有projects目录的非root用户,并且您应该以该用户的身份运行所需的命令,而不需要
sudo
。如果您需要以
root
身份运行,这可能意味着您在以前的一次运行中这样做了,并且已经破坏了您的文件权限

(在任何情况下,最佳做法都不会在生产中运行
install
,但至少是这样)


在少数情况下,您需要作为超级用户运行
composer
,并且您不是在一个非常受限的环境中(例如,构建Docker映像),您应该注意,不仅要使用
--no scripts
,还要使用参数
--no plugins
,因此,您只执行文件复制,而不执行其他脚本。

最佳做法是仅对需要它们的命令使用sudo。最佳解决方案是:不要以root或sudo身份运行composer。。。你可以像suI那样运行其他命令。不明白你的问题-为什么不简单地与其他用户一起运行composer?我不以其他用户的身份运行composer的原因是因为我想以.sh文件的形式运行一系列命令,并且不想以需要密码或其他交互的交互模式运行。是什么阻止你运行这些命令?为什么需要通过Composer触发它们?另外,为什么不首先使用所需的权限运行所有脚本?您能告诉我project目录需要哪一级别的权限吗?还是为整个/var/www文件夹设置相同的所有者和权限更好?我发现的另一个解决方案是创建临时用户来运行composer安装,但不知道这个临时用户的权限。没有什么特别的。通常,您将拥有一个不同于
www-data
的用户,该用户对该目录具有读写权限。如果所有项目都是您自己的,并且没有其他复杂问题,那么您可以将其用于
/var/www
。它可以简单地为您手头上的任何用户提供服务,并赋予该用户对这些目录和子目录的所有权。这是一个太宽泛的话题,但谷歌在“linux文件权限php项目”和类似的事情上,你会发现大量的材料。是的,大量的材料是问题所在。我迷路了。最后一个问题,如果我的用户与www数据不同,并且具有读/写权限。我是否能够运行chown www数据:www数据/dirPath而不会出现任何复杂情况?通常不应该执行
chown www数据
。您应该只需要在服务器需要写入的任何目录中执行此操作(例如,处理上载)。其他目录不应属于
www-data
。不,它们只需通过www进程即可读取,仅此而已。PHP解释器读取并执行该文件。这超出了原始问题的范围,不是吗?