跳到正文
原文
Torque· Nick Schäferhoff·· 2024-09-22编辑评分28

WordPress 文件权限:设置方法与最佳实践全解

WordPress File Permissions: Everything You Need to Know

编辑导读

WordPress 文件权限决定核心、插件和脚本能否安全修改站点文件,也关系到黑客入侵、恶意软件、数据泄露与站点接管风险。权限过宽或过严都可能破坏网站;管理员应理解 User、Group、Others 权限组及符号和数字表示法,并妥善处理共享主机中的只读文件。

你是否刚听说过 WordPress 文件权限,并 wondered 自己的权限是否设置正确?或者遇到了提示你没有相应权限的错误?无论哪种情况,这篇文章都适合你。

文件权限是保护网站非常重要的组成部分。它们可以锁定你的网站,同时允许 WordPress 本身、插件及其他脚本修改所需的内容。

但有时事情可能会出错。错误可能突然出现,或者文件权限被改成了不正确的值。在这种情况下,了解 WordPress 文件权限的工作原理及其使用方法会很有帮助。

这正是我们今天要解释的内容。下面,你将了解有关文件权限的一切,包括如何更改权限,以及让网站平稳运行的最佳实践。

了解文件权限级别

wordpress file permissions

如果你想了解如何在 WordPress 中更改文件权限,首先需要理解基础知识。为此,我们需要了解 Linux 权限。下面是对该主题的快速入门介绍。

文件权限的类型

文件可以拥有三种主要类型的权限。你不仅可以针对单个文件设置这些权限,也可以针对整个目录/文件夹进行设置。

  • 读取(r) – 允许用户查看文件内容或目录中的文件名。
  • 写入(w) – 写入权限允许用户修改文件内容。他们还可以在目录中创建、删除或重命名文件。
  • 执行(x) – 在这里,用户可以执行程序和脚本,或访问目录中的文件和子目录。

权限组

不过,究竟哪些人可以拥有这些权限呢?在 Linux 中,有三组人员可以访问文件/目录。

  • 用户(u) – 指文件/目录的所有者(通常是创建者)。
  • 组(g) – 共享共同权限级别的若干用户。任何用户都可以属于一个或多个组。
  • 其他人、所有人或公开用户(o) – 既不是文件所有者、也不属于已定义组的所有用户。

你可以分别为这些组设置不同的权限级别。在 WordPress 中,这些权限级别称为用户角色。例如,你不会希望网站上的普通订阅者拥有与管理员相同的权限。那无异于给自己埋下灾难的种子。

符号表示法和数字表示法

处理文件权限时,它们可以使用符号表示法或数字表示法来表示。

符号表示法使用上述字母表示读取(r)、写入(w)和执行(x)权限,或使用短横线表示无权限。这些字母分为三组,每组三个;前三个字母表示用户(u)权限,接下来的三个表示组(g)权限,最后三个表示其他人(o)权限。

以这个例子为例:rwxr-xr--

在这里,用户拥有全部权限(rwx),组拥有读取和执行权限(r-x),其他人组仅拥有读取权限(r–)。

使用数字表示法时,每种权限都会被赋予一个数值:

  • 读取(r)= 4
  • 写入(w)= 2
  • 执行(x)= 1

将它们相加,即可得到一个三位数,分别表示用户、组和其他人的权限。

使用上面相同的例子,用户的权限为 7(r + w + x),组的权限为 5(r + x),其他人的权限为 4(r)。这意味着,同一权限级别的数字表示法为 754。

WordPress 中的文件权限

wordpress code as symbol for security

在 WordPress 和网站 generally 的背景下,文件权限遵循与上述相同的原则。但你还需要注意一些差异。

  • 文件所有权——在 WordPress 环境中,文件和目录通常由 Web 服务器进程拥有(Apache 使用 www-data,NGINX 使用 nginx),而不是由个人用户拥有。
  • 插件和主题注意事项——WordPress 插件可能需要对特定文件和目录拥有读取和写入权限才能正常运行。插件通常使用 Filesystem API 与你的服务器安全地进行交互。
  • 有些组已经内置——如前所述,WordPress 使用 Administrator、Editor 和 Contributor 等内置角色。Contributor 只能创建和编辑自己的文章,不能编辑其他人的文章。从功能上来说,这意味着他们对所有文章/页面文件拥有读取权限,对自己创建的文章/页面文件拥有读取/写入权限。
  • 注意共享托管环境——共享托管可能会给文件权限带来问题。某些文件可能会被锁定,以防止多网站服务器上的其他用户访问敏感数据。你可能会发现某些文件甚至对管理员而言也被设为只读,需要 root 权限才能编辑。

文件权限设置不当的危险

现在问题来了:为什么这如此重要?你为什么应该在意这个听起来非常技术化的话题?

wordpress 404 error page

原因是文件权限构成了网站安全的基础。权限设置过于宽松,可能通过以下方式严重危及你的网站:

  • 黑客入侵和恶意软件——不当的权限可能让黑客潜入并几乎为所欲为。这包括安装恶意软件、查看私密文件或删除你的网站。
  • 网站被接管——如果有人利用宽松的权限成功侵入你的网站,就可能轻易接管你的账户,并将你锁在自己的网站之外。
  • 数据泄露——不当的权限可能导致访问者能够访问私密文件,包括图片、未完成/测试/草稿页面以及机密数据。
  • 不当的文件访问——某些权限可能允许用户更改你网站上的现有文件,或上传并执行恶意脚本等破坏性文件。

但问题不只是访问权限过多,权限过少同样会带来问题。权限设置过于严格会不可避免地导致网站无法正常运行,因为 WordPress 将无法正常工作。文件权限的设置需要在过多和不足之间取得平衡。

WordPress 文件权限最佳实践

在你开始逐一检查网站文件、寻找任何异常内容之前,了解 WordPress 文件权限的最佳实践是什么样子很重要。现在我们来谈谈这一点。

非必要不要更改权限

首先需要记住的是,在大多数情况下,你不需要更改文件权限。如果你使用的是优质托管服务提供商,并以正确方式安装了 WordPress,那么网站的这部分应该已经自动设置妥当。

wordpress installation

因此,除非你遇到了特定的 WordPress 错误,否则不要随意改动文件权限,尤其是在你不知道自己在做什么的情况下。擅自调整不理解的设置可能弊大于利。

一些网络主机,尤其是共享主机,可能会因托管方式的性质而对某些权限设置得更严格。如果你遇到权限不足的问题,最好联系你的主机服务商寻求帮助。

推荐的权限级别

如果你确实遇到了问题,并且不确定文件和目录应采用什么权限设置,WordPress 官方文档中提供了相关信息。

以下是通常推荐用于各种文件和文件夹的权限简要说明。不过,请记住,这会根据你的具体设置而有所不同。

  • 目录 – 755(rwer-er-e)。为了让服务器正常运行,大多数目录都需要执行权限。
  • 文件 + .htaccess – 644(rw-r–r–)。这允许用户查看你网站上的公开文件,但无法编辑它们。大多数文件应当只有你的用户账户可写。
  • wp-config.php – 视情况而定;根据站点设置和安全需求,400(r——–)、440(r–r—–)、600(rw——-) 或 640(rw-r—–)可能较为合适。最重要的一步是防止随机访问者访问这个重要文件。

不要限制过度

为文件权限找到合适的平衡可能令人焦虑,但你不能将它们全部设置为“000”。虽然你的站点会非常安全,但与此同时,任何人都将无法使用它。

你网站中的各项功能,从网络服务器到插件再到 WordPress 本身,都自然需要访问特定文件和目录的某些权限,才能继续正常运行。即便是访客,虽然不应被授予对大多数文件的写入或执行权限,但也至少需要能够“读取”你网站面向公众的部分。

严格收紧文件权限可能很有诱惑力,但这样可能造成严重破坏。当插件和功能停止工作时,你的仪表板上会出现大量警告。如果你切断了 WordPress 对核心文件的访问,甚至可能导致你的网站遭遇令人闻风丧胆的白屏死机错误。

采用最小权限原则

最小权限原则指出,用户(包括你的网络服务器和 WordPress 本身)应当只获得完成其工作所必需的访问权限。

授予“root”所有权意味着赋予对整个系统的完全控制和访问权限,这通常是没有必要的。如果黑客以 root 权限获得某个 WordPress 站点的访问权,就可能对整台服务器造成严重破坏。

相反,大多数文件的所有者通常应当是你的网络服务器用户,通常是 nginx(NGINX)或 www-data(Apache),二者都只拥有正常运行所必需的权限。这限制了恶意行为者可造成的破坏。

在某些情况下,root 所有权是必需的,因此如果你不了解自己正在做什么,就不应随意更改权限。与此同时,看到 root 所有权也可能值得担忧——尤其是当你注意到某个文件或目录的所有者突然发生改变时。

在其他任何需要创建文件或指定所有者的情况下,都应遵循最小权限原则。不要过度授予读取、写入或执行权限。你在服务器上创建的大多数文件都不需要 root 所有权。

备份你的网站

在更改网站上的任何敏感设置之前,最佳做法是同时备份你的网站和数据库文件。

configure duplicator backup

修改文件权限时很容易出问题,因此这提供了一层安全保障。如果你不小心弄坏了网站上的某些内容,只需回滚服务器即可。

切勿使用 777

将任何文件或目录的权限设置为 777,基本上等于让全世界的人都可以随意控制你的网站。

这会赋予任何随机访问者查看、编辑和删除文件,上传潜在恶意程序以及执行脚本的权限。显然,这是个糟糕的主意。

虽然只给一个文件授予完全权限看似无害,但老练的黑客很容易利用这一点执行恶意脚本、提升权限,并进一步渗透你的服务器。所以请不要这样做。

如何更改 WordPress 文件权限

既然我们已经了解了文件权限的最佳实践,接下来就学习如何在各种服务器环境中更改权限。

cPanel 或控制面板

大多数虚拟主机都会提供 cPanel 或某种自定义控制面板的访问入口。你需要查看主机服务商的文档,但在 cPanel 中,通常可以进入文件管理器,然后右键单击任意文件夹或文件,并选择更改权限。

change permissions in cpanel file manager
图片来源:cPanel

FTP/SFTP

你也可以通过 FTP/SFTP 访问来更改权限。首先安装 FileZilla 等 FTP 客户端并登录服务器。右键单击任意文件或文件夹,然后选择文件权限…

access wordpress file permissions in filezilla

接着,输入数值,或者直接勾选想要设置的选项框。

configure wordpress file permissions via ftp

SSH/命令行

在这一步中,需要使用命令行访问工具。这通常由你的虚拟主机提供。你需要使用 cd 命令导航到想要更改权限的文件或子目录所在的目录。例如:

cd public_html/example_folder

然后,你可以使用 chmod 命令修改此文件夹中某个文件或子目录的权限。 

chmod 755 example.html

你也可以一次递归设置整个目录的权限,但操作时请务必小心。

chmod -R 755 example_subfolder

使用插件

有些安全插件允许你直接从控制面板轻松切换文件权限。一个例子是 All-In-One Security (AIOS)。借助它,你可以更改文件权限、识别不安全的文件权限,并一键修复问题。 

all in one security wordpress file permissions scan

WordPress 中常见的文件权限错误

最后,我们来看看 WordPress 中几种常见的文件权限错误及其成因。

  • 403 Forbidden(你无权访问此服务器上的内容)——如果你尝试访问某个文件但没有读取权限,就会看到此错误。例如,访问者尝试访问未发布的文章或页面时就会遇到此错误。如果你是管理员却看到这个错误,可能需要检查权限设置。
  • 缺少所需的文件权限——某些插件可能会报告此错误。这可能是由于网站文件并非归 nginx 或 www-data 所有。
  • 你必须使此文件可写,才能保存更改——如果你没有某些文件的写入权限,就会在 WordPress 编辑器中看到这个提示。
  • 权限被拒绝。错误代码:3——尝试修改文件或将文件上传到网站时会出现此错误。成因可能包括网站文件归 root 而非 nginx 或 www-data 所有、需要 root 访问权限,或者仅仅缺少读/写权限。
  • 安装失败:无法创建目录 ——如果你在安装或更新主题和插件时看到此提示,说明 WordPress 对其尝试使用的目录没有写入权限。

更改 WordPress 文件权限时请谨慎操作

文件权限是维护网站安全非常重要的一部分,因此不应随意更改。任何一个小改动都可能导致网站无法正常运行,或让黑客更容易潜入。

但了解这些权限的工作方式仍然很有帮助,尤其是在开始出现错误时。现在你已经知道如何操作——以及最重要的是,如果需要更改 WordPress 文件权限时,哪些事情不应做。

你是否成功解决了 WordPress 文件权限错误?请在评论中分享你的经历,帮助遇到相同问题的其他人!

文章《WordPress 文件权限:你需要了解的一切》首发于 Torque。

来源:Torque · https://torquemag.io/2024/09/wordpress-file-permissions/

部分链接为推广/关联链接。