我正在运行基于 Ubuntu 的 Linux/Nginx/MariaDB/PHP (LEMP) 服务器,并在 的根帐户中安装了 Wordpress /var/www/example.com/
。我的 Wordpress 以用户身份运行,Nginx 也以用户/组身份www-data
运行。www-data:www-data
在我最初设置 Wordpress 时,我首先使用以下命令以递归方式(并且可能不安全)将根 Wordpress 目录的所有权更改为 Nginx 用户(www-data):
sudo chown www-data:www-data /var/www/example.com/ -R
这实际上赋予了 Nginx 用户我的所有 Wordpress 文件和文件夹的所有权。
接下来,(按照“强化 WordPress”指南)我将所有文件夹的权限更改(chmod)为 755,将所有文件的权限更改(chmod)为 644。
sudo find /var/www/example.com/ -type d -exec chmod 755 {} \;
sudo find /var/www/example.com -type f -exec chmod 644 {} \;
在 Wordpress 中“更改文件权限”文章中,它表示该wp-config.php
文件的安全权限为 600。然而,在“强化-Wordpress”指南中说,wp-config.php
文件的安全权限为 400 或 440(即它通常意味着 400 或 440 权限)。它是哪一个?它是否取决于谁拥有wp-config.php
以及谁拥有其余的 Wordpress 文件?
它没有说明文件的所有权wp-config.php
应该是www-data:www-data
、、root:root
还是root:www-data
。www-data:root
强化指南和更改文件权限指南没有提及 Wordpress 文件和wp-config.php
/.htaccess
文件的正确所有权。它们只讨论权限,而不是所有权。
这让我感到很困惑。为了试验我的特定配置(www-data:www-data
到目前为止拥有的所有内容),我尝试了以下方法来保护我的重要 Wordpress 文件,例如wp-config.php
:
例如:1
sudo chown root:root wp-config.php
sudo chmod 400 wp-config.php
这破坏了我的 wordpress 安装并导致当我导航到我的主页时出现空白屏幕。
例如:2
sudo chown root:root wp-config.php
sudo chmod 444 wp-config.php
这成功地让我看到了我的 wordpress 主页,而且似乎有效。
例如:3
sudo chown root:root wp-config.php
sudo chmod 404 wp-config.php
这也成功允许我的 wordpress 安装运行,我可以正常访问主页。但是,这也表明,为了使 Wordpress 正常工作,它需要文件wp-config.php
允许所有人读取。这到底是为什么?这不是不安全的吗?难道不应该www-data
是唯一能够读取此文件的用户吗?
为了证明“需要全世界可读的权限”这一理论,我继续进行示例 4。
例如:4
sudo chown root:root wp-config.php
sudo chmod 004 wp-config.php
这些具有 root 所有权的权限仍然允许我的 Wordpress 安装工作,即使组 root 无法读取/写入/执行,并且用户 root 无法读取/写入/执行。
接下来我尝试了一些不同的东西来了解组权限是如何使用的。
例如:5
sudo chown root:www-data wp-config.php
sudo chmod 040 wp-config.php
同样,由于该组归所有www-data
,并且www-data
只授予读取权限,所以我的 Wordpress 安装也可以正常工作。我的主页在这种配置下工作得很好。这似乎是最安全的权限/所有权配置。但我不确定我是否完全理解“组”访问在这些权限下允许什么。组可以通过任何方式www-data
覆盖这种配置中的用户root
吗?Wordpress 或我的根用户可以写入此文件吗?如果不能(我假设这是权限所规定的),那么为什么我可以使用我的 Linux 上的根帐户通过 nano 编辑此文件?例如,如果某个文件具有----------
(没有任何权限)权限,那么为什么我的根用户可以使用 nano 编辑器访问和写入此文件?----------
权限难道不应该将文件永久锁定在操作系统中并使其不可变吗?因为根据设置的权限,任何人都无权访问或更改它。我不确定我是否完全理解或掌握根帐户如何覆盖具有有限权限的文件的权限,并且我不确定授予wp-config.php
组访问权限www-data
和用户访问权限的后果root
。
有人可以通过回答其中一些问题向我解释这一切是如何工作的,并且考虑到我的设置(LEMP SERVER 与 Nginx 作为 www-data:www-data 运行)的所有因素,您能否推荐我应该在我的、以及我的其余 Wordpress 目录上使用什么用户所有权/组所有权/权限,以使我的设置wp-config.php
尽可能.htaccess
地受到限制和安全,而不会影响 Wordpress 本身的可用性?
感谢任何解释、示例和获得的理解。