SSH更改public_html

时间:2016-06-02 06:22:25

标签: .htaccess ssh permissions chown

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â的所有权:不允许操作

我还使用sudochgrp对此进行了测试,但没有运气。

此外,我无法运行我的网站。浏览器给我以下错误。

  

禁止

     

您无权访问此服务器上的/。服务器无法   读取htaccess文件,拒绝访问是安全的

     

此外,尝试时遇到403 Forbidden错误   使用ErrorDocument来处理请求

1 个答案:

答案 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;因为没有人是该用户并将该组分组。