我在这里看了一下,但没有找到关于最佳文件权限的任何细节。我也在这里看了一些WordPress表单的问题,但任何建议777的人显然需要上一节安全课。

总之,我的问题是这样的。我应该拥有以下权限:

存储所有WordPress内容的根文件夹 wp-admin wp-content wp-includes

那每个文件夹里的所有文件呢?


当前回答

对于那些在主文件夹下有wordpress根文件夹的用户:

apache Ubuntu * * /

将您的用户添加到www-data组:

CREDIT赋予www-data组写权限

你想在你的用户上调用usermod。那就是:

sudo usermod -aG www-data yourUserName

**假设www-data组存在

检查用户是否在www-data组: 组yourUserName

你应该得到这样的东西:

youUserName : youUserGroupName www-data

** youUserGroupName通常与您的用户名类似

递归地更改wp-content文件夹的组所有权,保持用户所有权 chown username:www-data -R youWebSiteFolder/wp-content/* 修改目录为“youWebSiteFolder/wp-content/” cd youWebSiteFolder / wp-content 递归更改文件夹和子文件夹的组权限以启用写权限: 找到。-type d -exec chmod -R 775 {} \;

/home/yourUserName/youWebSiteFolder/wp-content/的模式从0755 (rwxr-xr-x)更改为0775 (rwxrwxr-x)

递归地更改文件和子文件的组权限以启用写权限: 找到。-type f -exec chmod -R 664 {} \;

结果应该如下所示:

WAS:
-rw-r--r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html
CHANGED TO:
-rw-rw-r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html

等价于:

chmod -R ug+rw文件夹

文件的权限是664,目录的权限是775。

附注:如果有人在更新插件时遇到“无法创建目录”错误,请: server@user:~/domainame.com$ sudo chown用户名:www-data -R wp-content 当你在你的域的根。 假设:wp-config.php有 LocalHost上的FTP凭据 定义(“FS_METHOD”、“直接”);

其他回答

最好在https://wordpress.org/support/article/changing-file-permissions/上阅读wordpress文档

All files should be owned by the actual user's account, not the user account used for the httpd process Group ownership is irrelevant, unless there's specific group requirements for the web-server process permissions checking. This is not usually the case. All directories should be 755 or 750. All files should be 644 or 640. Exception: wp-config.php should be 440 or 400 to prevent other users on the server from reading it. No directories should ever be given 777, even upload directories. Since the php process is running as the owner of the files, it gets the owners permissions and can write to even a 755 directory.

我设置权限为:

    # Set all files and directories user and group to wp-user
    chown wp-user:wp-user -R *

    # Set uploads folder user and group to www-data
    chown www-data:www-data -R wp-content/uploads/

    # Set all directories permissions to 755
    find . -type d -exec chmod 755 {} \;

    # Set all files permissions to 644
    find . -type f -exec chmod 644 {} \;

在我的例子中,我为WordPress创建了一个特定的用户,这与apache的默认用户不同,后者阻止从web访问该用户拥有的那些文件。

然后授予apache用户处理上传文件夹的权限,最后设置足够安全的文件和文件夹权限。

编辑

如果你正在使用W3C的全缓存,你应该做下面的事情:

rm -rf wp-content/cache/config
rm -rf wp-content/cache/object
rm -rf wp-content/cache/db
rm -rf wp-content/cache/minify
rm -rf wp-content/cache/page_enhanced

那么它就会起作用!

编辑

在开发WordPress网站一段时间后,我建议不同的环境文件权限:

在生产中,我不会允许用户修改文件系统,我只允许他们上传资源,并允许他们访问一些插件特定的文件夹来进行备份等。但是在Git下管理项目和在服务器上使用部署键,在登台和生产中都不能很好地更新插件。我把生产文件设置留在这里:

# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/uploads/

Www-data: Www-data = apache或nginx用户和组

登台应该是它的克隆,因此它将共享相同的生产权限。

最后,开发环境将有权更新插件,翻译,一切…

# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/

# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/themes

# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/plugins/your-plugin

Www-data: Www-data = apache或nginx用户和组 你的用户:root-group =当前用户和根组

这些权限将允许您在主题和您的插件文件夹下进行开发,而无需询问许可。其余的内容将由Apache或Nginx用户拥有,以允许WP管理文件系统。

在创建git repo之前,首先运行以下命令:

# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;

# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;

根据我在自己网站上的阅读和痛苦,在被黑客入侵后,我想出了上面的列表,其中包括一个名为Wordfence的Wordpress安全插件的权限。(非附属机构)

在我们的例子中,wordpress文档根是 /var/www/html/example.com/public_html

打开权限,以便www-data可以像下面这样写入文档根目录:

cd /var/www/html/example.com
sudo chown -R www-data:www-data public_html/

现在,作为管理员,您可以在站点的仪表板上执行更新。

按照以下步骤完成更新后的安全站点:

sudo chown -R wp-user:wp-user public_html/

上面的命令将wordpress安装中的所有内容的权限更改为wordpress FTP用户。

cd public_html/wp-content
sudo chown -R www-data:wp-user wflogs
sudo chown -R www-data:wp-user uploads

上面的命令确保安全插件Wordfence可以访问它的日志。上传目录也可以通过www-data写入。

cd plugins
sudo chown -R www-data:wp-user wordfence/

上面的命令还确保安全插件为其正确的功能需要读写访问。

目录和文件权限

# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;

# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;

将wp-config.php的权限设置为640,这样只有wp-user可以读取该文件,其他用户不能读取。440的权限不适合我以上的文件所有权。

sudo chmod 640 wp-config.php

使用SSH的Wordpress自动更新在PHP5上运行正常,但在PHP7.0上就不行了,因为PHP7.0 -ssh2与Ubuntu 16.04绑定的问题,我不知道如何安装正确的版本并使其工作。幸运的是,一个非常可靠的插件ssh- SFTP -update -support(免费)使使用SFTP的自动更新成为可能,而不需要libssh2。因此,除非在极少数需要的情况下,上述权限永远不必放松。

我不能告诉你这是否正确,但我在谷歌计算应用程序引擎上使用Bitnami图像。我有插件和迁移的问题,并进一步搞砸了chmod'ing权限后,我发现这三行解决了我所有的问题。不确定这是否是正确的方法,但对我来说很有效。

sudo chown -R bitnami:daemon /opt/bitnami/apps/wordpress/htdocs/
sudo find /opt/bitnami/apps/wordpress/htdocs/ -type f -exec chmod 664 {} \;
sudo find /opt/bitnami/apps/wordpress/htdocs/ -type d -exec chmod 775 {} \;

对于OS X使用以下命令:

sudo chown -R www:www /www/folder_name