public_html的默认所有权为myusername:nobody
drwxr-xr--. 18 myusername nobody 4096 Jun 1 16:06 public_html/
我将其更改为myusername:myusername
,因为我需要使用以下命令访问 public_html 中的文件
# chown myusername:myusername public_html
它的工作和所有权发生了变化。
现在我无法将所有权更改回myusername:nobody
。我正在使用此命令
chown livegiftcard:nobody public_html
它给了我错误
chown:更改'public_htmlâ的所有权:不允许操作
我还使用sudo
和chgrp
对此进行了测试,但没有运气。
此外,我无法运行我的网站。浏览器给我以下错误。
禁止
您无权访问此服务器上的/。服务器无法 读取htaccess文件,拒绝访问是安全的
此外,尝试时遇到403 Forbidden错误 使用ErrorDocument来处理请求
答案 0 :(得分:2)
<强>问题:强> apache / nginx有一个用户,需要读取Docroot中的文件。默认用户和组是:www-data:www-data。如果在您的情况下这是正确的,我不是用户。
现在,文件归myusername所有:myusername,而apache / nginx用户可能不在组&#34; myusername&#34;中。因此,如果您对linux的权限系统有一些了解,那么Web服务器用户只拥有每个人拥有的权限(第三列)。当该组设置为nobody时,任何组都不拥有这些文件,并且每个用户都可以在组权限下执行操作。在你的情况下,我猜这个小组可以读取所有文件而其他所有文件都可以读取。
你能做什么: 授予所有其他人使用
阅读文件的权利chmod -R o+r public_html
现在每个人,包括网络服务器用户都可以读取文件,你不会得到403错误。 -R用于递归,因此public_html下的每个文件和目录也都会获得可读标记。
另一件事是将网络服务器用户添加到组&#34; myusername&#34;所以webserveruser也可以使用组权限。
我想到的第三个也是最后一个可能性是将小组改为&#34; nogroup&#34;而不是&#34; nobody&#34;因为没有人是该用户并将该组分组。