新版的云服务器上,ubuntu 系统默认登录用户就是 ubuntu。然后在 pull 代码和 composer 下载第三方库的时候,就会失败。

需要注意的是,在 ubuntu 用户下创建的目录,下载的文件也可能属于 root 用户组。这时候需要修改文件或文件夹的所属:

chown ubuntu.ubuntu www_folder
# 遍历所有文件
chown -R ubuntu.ubuntu www_folder

如果 composer 失败,可以看一下 vendor 目录的所有者是否为当前用户。

对于属于 root 用户的文件,有的是可以修改用户组的,有的需要 sudo su 切换到 root 用户下修改。

root 用户无权限

对于有些文件,切换到 root 用户下也无法修改用户组,依然报错无权限。此时需要查看的是文件的属性,改文件有可能被锁定了。

遇到的情况是 .user.ini 文件,用户组属于 root,但修改报错。

lsattr -a
或者
lsattr /path/to/.user.ini

里面会现有有一个 i 标识的属性,有这个标志标识文件被锁定,需要使用 chattr 修复去除。

chattr -i /path/to/.user.ini

之后再检查和修改文件就可以正常执行了。