我有一个在Linux上运行的appache服务器 – CentOS。
为了能够在Windows上编辑我的php文件,我将服务器链接到了我的Dropbox帐户,并从Dropbox文件夹(位于/ root / Dropbox下)创build了一个符号链接到我的public_html文件夹。 然后,当我试图通过Windows在public_html中编辑一个文件,它的权限转向根,因此我得到了着名的500错误。 我猜想它与上述符号链接的权限有关,所以我将符号链接的权限更改为我的用户帐户,但没有更改。 但接下来发生的事情让我不知所措:突然,当我尝试访问我网站上的任何页面时,我得到:
禁止您无权访问此服务器上的/My/site/name/page.php。
挖掘我发现public_html所有者和组是根, ps aux | grep apache ps aux | grep apache显示
root 4533 0.0 0.0 10892 1604 ? S Jul31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 4534 0.0 0.1 10892 2956 ? S Jul31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 4535 0.0 0.1 10892 2952 ? S Jul31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 4536 0.0 0.1 10892 2956 ? S Jul31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 4537 0.0 0.1 10892 2956 ? S Jul31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 4538 0.0 0.1 10892 2956 ? S Jul31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 4551 0.0 0.1 10892 2208 ? S Jul31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 4556 0.0 0.1 10892 2200 ? S Jul31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 4565 0.0 0.1 10892 2200 ? S Jul31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 4572 0.0 0.1 10892 2200 ? S Jul31 0:00 /usr/local/apache/bin/httpd -k start -DSSL
改变public_html组没有人做的伎俩,并得到这个错误。 但是我不知道是不是应该这样呢,我的意思是,我不知道以前有什么组合。
所以我有两个疑问:
1.鉴于提到的apache的用户,public_html应属于哪个用户?
2.如果1的答案是root,你能想到导致这个错误突然发生的任何原因,为了解决这个问题应该做些什么?
值得一提的是,我在这里发布了这个问题,但是我没有得到任何答案,所以我在这里尝试。 希望它是合法的。
您可以以非root用户的身份运行Dropbox,拥有该用户和Apache组的public_html,并获得rwxrwx(即770)的权限,以便您的用户和Apache都可以读取和写入。
另外,作为Linux / Unixpipe理的一般原则,除非你绝对必须,否则绝不应该以root身份运行应用程序。
要解释为什么Apache似乎使用root,应用程序只允许在特权端口(1024以下)上侦听,如果它们是以root权限启动的。 由于HTTP / HTTPS分别在端口80/443上提供,因此Apache以root用户身份启动,然后在自己的用户(在默认情况下,在基于Red Hat的发行版中称为“apache”,其中CentOS是一种)基于Debian的分发版本的“www-data”,例如Ubuntu)。 非特权用户可以在您的Apacheconfiguration中进行configuration,但对于95%的应用程序来说,默认情况是好的。