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