我已经在 Linux 服务器上设置了 Laravel,我的 apache 由 root 拥有,www 由 www-data 拥有,并且存储目录中创建的任何新文件都由 root 用户拥有,下面是屏幕截图权限对于 /var/www/website/ 内的所有目录
和这些是 storage/logs 目录中的权限。新创建的文件归 root 用户所有。现在,Web 服务器无法打开此文件进行写入,这会导致网站出现错误。我不确定这种情况是在 root 拥有文件时发生的,还是在什么时候发生的。但我一直忽略这个问题,并一直使用命令进行临时修复
sudo chmod -R 775 storage
或者sudo chown www-data:www-data storage
我想彻底修复这个错误。供参考这些 /etc/ 目录中的权限
答案1
ACL 可让您添加其他用户权限 - 例如,文件可能归 www-data 所有,但其他用户可以拥有其读/写权限。要进行设置:
安装 acl(apt install acl)。然后在 fstab 文件中,添加 acl 作为选项。例如:
/dev/sda / ext3 noatime,errors=remount-ro,acl 0 1
然后重新挂载:
mount -a
如果您更改了所有备份到 www-data 的文件的所有权,请将其更改为这些文件。为稍后创建的任何文件设置默认“acls”:
setfacl -dm u:myname:rwx /var/www
...并在已经存在的文件上设置 acl:
setfacl -m u:myname:rw
...和目录
setfacl -m u:myname:rwx