我还必须更改根web目录的所有者。
chown apache:apache . # or chown apache:apache /var/www/html
奥托编辑:克洛伊,由于你要求我提供的信息超出了我在评论中的合理范围,我将在你的回答中附上这一点。我希望没问题。如果没有,请随时回复,或者让我知道,我会这样做。
我之所以评论这是一个安全问题,与文件所有权、限制权限和访问有关。
类Unix系统包含“所有者”和“权限”的概念。文件由某些用户帐户拥有,并且具有控制这些文件是由其他帐户读取、写入还是可执行的权限。这本质上是一种安全特性,可以防止其他帐户写入您的文件,或者允许他们这样做。
运行程序也有“所有者”。这些程序继承其所有者的权限功能。如果您运行一个程序,它可以做任何您可以做的事情,但将被阻止做任何您不能做的事情,因为它是由您的用户帐户“拥有”的。
当涉及到web服务器时,您实际上是允许外部世界在您的计算机上运行程序。因此,所有权很重要,因此大多数web服务器以“www”用户的身份运行,或者在Apache web服务器的常见情况下,以“Apache”用户的身份运行。
如果有人能够通过你网站上运行的某个程序入侵,那么他们将获得对该程序的控制,但仍将受到该程序功能的限制。如果他们破解了“apache”运行的进程,那么他们的用户将是“apache”,并且他们只能以“apache”用户帐户的身份访问。
因此,将您的文件归“apache”所有是一个安全问题,因为您本质上是说世界上任何人都是这些文件的所有者。任何碰巧从那扇门进来的人都可以看到它们,编辑它们,修改它们。
另一方面,如果拥有文件的用户帐户是“user”,而“apache”恰好有权读取文件,但没有写入文件,那么web服务器仍然可以完成其工作。它可以读取文件,运行PHP脚本,做所有它应该做的事情。。。但不修改文件。
这就是WordPress要求FTP凭据的原因。当它进行自我更新时,会注意到WP文件归“用户”所有,但WordPress实际上是以“apache”的身份运行的。因此,如果不更改所有者,它就无法正确更新。“apache”用户无法写入“用户”拥有的文件。它没有此权限。更重要的是,WordPress需要创建新文件并删除旧文件。因此,如果它在作为“apache”运行时这样做,那么新文件将归“apache”所有,而它们应该归“user”所有。它故意在此时停止更新,因为它无法创建具有正确所有权的文件。
请求FTP提供了第二种方法。它可以通过FTP连接回自己的服务器,并使用这些凭据,它可以作为正确的用户写入文件。。。仅此一次。断开连接后,凭据将被忘记。四周都很安全。
换言之,当您输入FTP信息时,您正在向WordPress提供安全凭据,以便能够一次性更改文件。通过将文件归“apache”所有,WordPress可以随时更改文件,而无需任何其他凭据。您已经绕过了此处的安全功能,与以前一样,WordPress无法在没有您的登录信息的情况下更改文件,现在可以了。这是个问题。
现在,可能您没有正常运行FTP服务。也许您只使用SSH。那也没关系。在这种情况下,可以考虑将PHP SSH2扩展添加到服务器的PHP配置中。如果WordPress发现这一点,而不仅仅是FTP,您还可以选择SFTP,它使用SSH连接来验证和复制文件。同样的原则也适用,它试图为文件编写正确的所有权,以防止安全问题。
安全性不是二进制的,它有层次。如果有人获得未经授权的访问权限,正确配置可以帮助限制可能造成的损坏。文件和进程所有权在unix类型的系统中是一个相当低的安全级别,但它仍然是一个重要的安全级别。