![另一个权限、所有权和用户问题](https://linux22.com/image/925054/%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%9D%83%E9%99%90%E3%80%81%E6%89%80%E6%9C%89%E6%9D%83%E5%92%8C%E7%94%A8%E6%88%B7%E9%97%AE%E9%A2%98.png)
这始于我注意到一个网站提供客户端被服务器配置拒绝Apache error.log 中的错误,但只出现在一个本地站点的某些文件上。其余站点和所有其他站点都很好,没有出现错误。由于所有站点都具有相同的权限,这似乎很奇怪,但为了一举两得,我开始查看权限和所有权,如下所示。
为了尝试保持本地开发系统和实时服务器之间的权限兼容(实时服务器要求文件夹具有 755 个权限,文件具有 644 个权限),我已使用以下命令将本地开发系统上的权限设置为相同的权限:
sudo cd /var/www/html
sudo find . -type d -exec chmod 0755 {} \;
sudo find . -type f -exec chmod 0644 {} \;
但是,由于这些权限和用户/所有权,www-data
我无法再保存新文件或编辑已更改的文件,即使我自己的用户名属于 www-data 组。我在 Ubuntu 20.04 上运行 Apache2。
更新:我不喜欢这样做,但又不得不让它工作,所以我让自己成为所有者,sudo chown -R don:www-data /var/www/html
这样至少可以让我保留 644/755 文件/文件夹权限,同时仍然能够读取和写入文件。不过,我很想知道如何让它与正确的 www-data 用户一起工作!
但是,client denied by server configuration
Apache error.log 文件中的某些文件仍然存在错误。有什么办法可以消除它吗?所有文件和文件夹都具有适当的权限,因此不确定为什么这种情况只发生在几个文件上,并且只发生在一个网站上。
答案1
尝试针对您希望其正常运行的父目录运行以下两个命令。以下是我的系统中的示例。
将所有文件递归更改为 644
sudo find /var/www/html/moodlecnx/ -type f -exec chmod 644 {} \;
将所有目录递归更改为 755
sudo find /var/www/html/moodlecnx/ -type d -exec chmod 755 {} \;