PHP项目部署,Composer install Do not run Composer as root/super user!

 阿蕓 发布于 2022-11-17 22:07

到线上部署PHP项目的时候,代码copy后,安装依赖Composer install的时候提示,Do not run Composer as root/super user!

好吧,看了官方给的说明文档https://getcomposer.org/root,主要说,防止一些第三方代码,拥有超级管理员的权限来执行一些脚本,神马的。我知道不安全,但我只想先部署上去测试...

安装官方给的说明,添加--no-plugins --no-scripts参数,但是依旧报那个错误。

composer install --no-plugins --no-scripts --no-dev

后面我就添加了一个部署用的账户,为了好分配权限,就分配到了用户组www-data.

useradd www-deploy -g www-data

然后在执行Composer install的时候,切换用户为www-deploy执行.

#执行完成没任何反应(在项目目录,当前目录也有composer.json)
su www-deploy -c "composer install"

#执行下面语句,报错如下
su www-deploy:www-data -c "composer install"
#报错信息
No passwd entry for user 'www-deploy:www-data'

好吧,我就没辙了,我在考虑要不要专门整个www-deploy的用户,用来登录部署项目。

求助下大家,谢谢。

看了些自动化运维工具,例如ANSIBLE,感觉有些功能还是需要Root权限的,比如执行Docker的一些命令(初始化环境,或者添加新的Docker容器,如果不使用sudo会产生安全问题,参考文章),安装一些必备软件。

感觉目前的思路:

代码部署:使用单独的用户:www-deploy
环境搭建:使用root,或者能获得root权限的sudoer

但是说实在感觉不出,比纯root安全性提高在哪里(我能想到的就是部署脚本,只能操作自己home目录里面东西,不用担心,不小心rm -rf /...)。

========== 11-3 16:60 ==========

知道错误在哪了...

composer我写了个shell脚本,忘了把参数带上了

#/bin/composer
php composer.phar $*(忘了加参数了...)

然后新建了一个www-deploy用户:用户组用来部署

添加www-deploy用户:用户组
groupadd www-deploy
useradd www-deploy -g www-deploy -m

#设置www-data到www-deploy用户组
groupdel www-data
usermode -g www-deploy www-data

#文件夹没有x权限,无法cd进去.
chmod 770 `find /home/www-deploy type -d`
chmod 660 `find /home/www-deploy type -f`

设置代码目录所有者有www-data:www-deploy
chown www-data:www-deploy /home/www-deploy/www
1 个回答
  • 你的方向就错了嘛= =你是一只在用root操作服务器?

    2022-11-17 22:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有