欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Do not run Composer as root/super user! See https://getcomposer.org/root for details

compser 执行命令提示do not run composer as root/super !

 

这个是因为composer为了防止非法脚本在root下执行,解决办法随便切换到非root用户即可
 

1

到线上部署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个回答


普通分类: