更正WordPress的文件权限

我已经看过这里,但没有find最好的文件权限的任何细节。 我也看了一些WordPress的forms的问题在这里,但任何人build议777显然需要一点安全的教训。

总之我的问题是这个。 我应该拥有什么权限以下内容:

  1. 存放所有WordPress内容的根文件夹
  2. 可湿性粉剂pipe理员
  3. WP-内容
  4. WP-包括

然后在每个文件夹中的所有文件?

当您设置WP时,您(networking服务器)可能需要对文件进行写入访问。 所以访问权限可能需要松动。

chown www-data:www-data -R * # Let Apache be owner find . -type d -exec chmod 755 {} \; # Change directory permissions rwxr-xr-x find . -type f -exec chmod 644 {} \; # Change file permissions rw-r--r-- 

设置后,你应该加强访问权限 ,根据Hardening WordPress的所有文件除wp-content应该只能由您的用户帐户写入。 wp-content也必须由www-data写入。

 chown <username>:<username> -R * # Let your useraccount be owner chown www-data:www-data wp-content # Let apache be owner of wp-content 

也许你想稍后改变wp-content的内容。 在这种情况下,你可以

  • su把用户临时改成www-data
  • 给wp-content组写入权限775并join组www-data或者
  • 为您的用户提供使用ACL访问文件夹的权限。

不pipe你做什么,确保这些文件对于www数据具有rw权限。

www-data用户(在这种情况下是web服务器用户)提供对所有wp文件的完全访问可能是危险的。 所以宁可要这样做:

 chown www-data:www-data -R * 

但是,在安装或升级WordPress及其插件的时刻,这可能很有用。 但是,当你完成它不再是一个好主意,保持Web服务器拥有的WP文件。

它基本上允许networking服务器放置或覆盖您的网站上的任何文件。 这意味着,如果有人设法使用Web服务器(或某些.php脚本中的安全漏洞)将某些文件放入您的网站,则有可能接pipe您的站点。

为了保护您的网站免受这种攻击,您应该遵循以下规则:

所有文件应该由您的用户帐户拥有,并且应该由您写入。 任何需要从WordPress获得写入权限的文件都应该可以通过Web服务器写入,如果你的主机设置需要它,这可能意味着这些文件需要由Web服务器进程使用的用户帐户归组所有。

/

根目录的WordPress目录:所有的文件只能由你的用户帐户写入,除了.htaccess,如果你想让WordPress为你自动生成重写规则。

/wp-admin/

WordPresspipe理区域:所有文件只能由您的用户帐户写入。

/wp-includes/

大量的WordPress应用程序逻辑:所有文件只能由您的用户帐户写入。

/wp-content/

用户提供的内容:打算由您的用户帐户和Web服务器进程写入。

/wp-content/你会发现:

/wp-content/themes/

主题文件。 如果您想使用内置的主题编辑器,则所有文件都需要由Web服务器进程写入。 如果您不想使用内置主题编辑器,则所有文件只能由您的用户帐户写入。

/wp-content/plugins/

插件文件:所有文件只能由您的用户帐户写入。

其他可能与/wp-content/目录一起存在的目录应该由任何插件或主题所要求的文件logging。 权限可能会有所不同。

来源和附加信息: http : //codex.wordpress.org/Hardening_WordPress

对于那些在他们的home文件夹下有wordpress根文件夹的人:

** Ubuntu / Apache

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

CREDIT 授予对www数据组的写入权限

你想调用你的用户usermod 。 所以这将是:

 sudo usermod -aG www-data yourUserName 

**假设www-data组存在

  1. 检查你的用户是否在www-data组中:

    groups yourUserName

你应该得到像这样的东西:

 youUserName : youUserGroupName www-data 

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

  1. recursion地更改wp-content文件夹的组所有权,保持您的用户所有权

    chown yourUserName:www-data -R youWebSiteFolder/wp-content/*

  2. 将目录更改为您的WebSiteFolder / wp-content /

    cd youWebSiteFolder/wp-content

  3. recursion更改文件夹和子文件夹的组权限以启用写入权限:

    find . -type d -exec chmod -R 775 {} \;

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

  1. recursion地更改文件和子文件的组权限以启用写入权限:

    find . -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目录。

如果任何人在更新插件时遇到错误'could not create directory' ,请执行以下操作:
server@user:~/domainame.com$ sudo chown username:www-data -R wp-content
当你在你的域名的根源。
假设: wp-config.php
LocalHost上的FTP凭证
define('FS_METHOD','direct');

我将权限设置为:

  # 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 {} \; 

在我的情况下,我创build了一个WordPress的特定用户,这是不同于apache的默认用户,防止从networking访问该用户拥有的文件。

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

EDITED

如果您使用的是W3C Total Cache,则还应该执行下一个操作:

 chmod 777 wp-content/w3tc-config chmod 777 wp-content/cache 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 

那就行了!

EDITED

经过一段时间的开发WordPress网站,我build议每个环境不同的文件权限:

在生产中,我不会允许用户修改文件系统,我只会允许他们上传资源并访问某些插件特定的文件夹来进行备份等。但是,在Git下pipe理项目并使用部署密钥服务器,在升级和生产上都不是很好的更新插件。 我在这里离开生产文件设置:

 # 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 =你当前的用户和根组

这些权限将使您可以在themesyour-plugin文件夹下进行开发,而无需获得许可。 其余内容将归Apache或Nginx用户所有,以允许WPpipe理文件系统。

在创build一个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 {} \; 

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

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

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

文件夹为755,文件为644。

我认为下面的规则是build议为一个默认的WordPress的网站:

  • 对于wp-content内的文件夹,设置0755权限:

    chmod -R 0755插件

    chmod -R 0755上传

    chmod -R 0755升级

  • 让apache用户成为上述wp-content目录的所有者:

    chown apache上传

    chown apache升级

    chown apache插件

它实际上取决于你打算使用的插件,因为一些插件改变了wordpress的根文件。 但通常我推荐这样的WordPress的目录。

这将在每个文件/文件夹中为用户分配“root”(或者你正在使用的用户),R表示recursion,所以它不会停在“html”文件夹中。 如果你没有使用R,那么它只适用于“html”目录。

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

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

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

这将在“html”文件夹(包括子目录中的文件)中将每个文件的权限设置为644,因此外部人员不能执行任何文件,修改任何文件,组不能执行任何文件,只能修改任何文件用户可以修改/读取文件,但是甚至用户也不能执行任何文件。 这一点很重要,因为它可以防止“html”文件夹中的任何types的执行,因为除了wp-content文件夹,html文件夹的所有者和所有其他文件夹都是“root”(或您的用户),www-不要修改wp-content文件夹以外的任何文件,因此,即使Web服务器中存在漏洞,如果有人非法访问站点,也不能删除除插件之外的主站点。

 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服务器)通过pipe理面板更新/安装的临时权限,然后恢复回到“根”或您的用户一旦完成。

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

而在Nginx(相同的程序为Apache)保护wp-admin文件夹免受未经授权的访问和探测。 即使安装了nginx,也需要apache2-utils来encryption密码,如果您打算将更多的用户添加到同一个文件,则省略c。

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

现在访问这个位置

 /etc/nginx/sites-available/ 

使用此代码来保护“wp-admin”文件夹中的密码,现在如果您尝试访问“wp-admin”,它将询问密码/用户名。 请注意,这里使用包含encryption密码的“.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 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 

我无法告诉你这是否正确,但是我在Google Compute App Engine上使用了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 

要绝对确保您的网站安全,并且对文件夹使用了正确的权限,请使用以下安全插件:

https://en-ca.wordpress.org/plugins/all-in-one-wp-security-and-firewall/

https://en-ca.wordpress.org/plugins/wordfence/

这些插件将扫描您的Wordpress安装,并通知您有关任何潜在的问题。 这些还会警告您任何不安全的文件夹权限。 除此之外,这些插件将build议你应该分配给文件夹的权限。