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

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

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

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


当前回答

这实际上取决于你打算使用的插件,因为有些插件会改变wordpress的根文档。但一般来说,我推荐这样的wordpress目录。

这将分配“根”(或任何你正在使用的用户)作为每个文件/文件夹的用户,R意味着递归,所以它不会停止在“html”文件夹。如果你没有使用R,那么它只适用于“html”目录。

sudo chown -R root:www-data /var/www/html  

这将设置“wp-content”的所有者/组为“www-data”,从而允许web服务器通过管理面板安装插件。

chown -R www-data:www-data /var/www/html/wp-content

This will set the permission of every single file in "html" folder (Including files in subdirectories) to 644, so outside people can't execute any file, modify any file, group can't execute any file, modify any file and only the user is allowed to modify/read files, but still even the user can't execute any file. This is important because it prevents any kind of execution in "html" folder, also since the owner of the html folder and all other folders except the wp-content folder are "root" (or your user), the www-data can't modify any file outside of the wp-content folder, so even if there is any vulnerability in the web server, and if someone accessed to the site unauthorizedly, they can't delete the main site except the plugins.

sudo find /var/www/html -type f -exec chmod 644 {} +

这将限制具有rw-r-----这些权限的用户/组访问“wp-config.php”的权限。

chmod 640 /var/www/html/wp-config.php

如果一个插件或更新抱怨它不能更新,然后访问SSH并使用这个命令,并通过管理面板授予“www-data”(web服务器)更新/安装的临时权限,然后在完成后恢复到“根”或您的用户。

chown -R www-data /var/www/html

在Nginx中(apache的过程相同)保护wp-admin文件夹免受未经授权的访问和探测。即使你安装了nginx,也需要Apache2-utils来加密密码,如果你计划在同一个文件中添加更多用户,请省略c。

sudo apt-get install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd userName

现在参观这个地方

/etc/nginx/sites-available/

使用此代码保护带有密码的“wp-admin”文件夹,现在如果您试图访问“wp-admin”,它将询问密码/用户名。注意,这里你用了"。“Htpasswd”文件,包含加密后的密码。

location ^~ /wp-admin {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    index  index.php index.html index.htm;
}

现在重新启动nginx。

sudo /etc/init.d/nginx restart

其他回答

chown -Rv www-data:www-data
chmod -Rv 0755 wp-includes
chmod -Rv 0755 wp-admin/js
chmod -Rv 0755 wp-content/themes
chmod -Rv 0755 wp-content/plugins
chmod -Rv 0755 wp-admin
chmod -Rv 0755 wp-content
chmod -v 0644 wp-config.php
chmod -v 0644 wp-admin/index.php
chmod -v 0644 .htaccess

命令:

chown www-data:www-data -R *
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

ftp-user是用来上传文件的用户

chown -R ftp-user:www-data wp-content
chmod -R 775 wp-content

对于那些在主文件夹下有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”、“直接”);

文件的正确权限是644 文件夹的正确权限为755

要更改权限,请使用terminal和以下命令。

find foldername -type d -exec chmod 755 {} \;
find foldername -type f -exec chmod 644 {} \;

文件夹是755,文件是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。因此,除非在极少数需要的情况下,上述权限永远不必放松。