我在这里浏览了一下,但没有找到有关最佳文件权限的任何详细信息。我也看了看一些的WordPress的形式的问题,在这里也不过任何人说建议777显然需要在安全一点教训。
简而言之,我的问题是这个。我应该具有以下权限:
- 存放所有WordPress内容的根文件夹
- 管理员
- wp内容
- wp-includes
然后每个文件夹中的所有文件?
我在这里浏览了一下,但没有找到有关最佳文件权限的任何详细信息。我也看了看一些的WordPress的形式的问题,在这里也不过任何人说建议777显然需要在安全一点教训。
简而言之,我的问题是这个。我应该具有以下权限:
然后每个文件夹中的所有文件?
Answers:
设置WP时,您(Web服务器)可能需要对文件的写权限。因此,访问权限可能需要宽松。
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--
设置完成后,您应该加强访问权限,根据Harding 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的 rw权限。
www-data
??? 写入吗?听起来确实根本不安全。
向www-data
用户(在这种情况下为Web服务器用户)授予所有wp文件的完全访问权限可能很危险。因此,不要这样做:
chown www-data:www-data -R *
但是,在您安装或升级WordPress及其插件时,它可能会很有用。但是,当您完成操作后,保留Web服务器拥有的wp文件不再是一个好主意。
基本上,它允许Web服务器放置或覆盖您网站中的任何文件。这意味着,如果有人设法使用Web服务器(或某些.php脚本中的安全漏洞)将某些文件放入您的网站,则有可能接管您的网站。
为了保护您的站点免受此类攻击,您应该注意以下几点:
所有文件应归您的用户帐户所有,并且应由您写。如果您的托管设置需要,则需要从WordPress进行写访问的任何文件都应该可由Web服务器写入,这可能意味着这些文件需要由Web服务器进程使用的用户帐户归群组所有。
/
WordPress根目录:如果您希望WordPress自动为您生成重写规则,则所有文件只能由您的用户帐户写入,.htaccess除外。
/wp-admin/
WordPress管理区域:所有文件只能由您的用户帐户写入。
/wp-includes/
大量的WordPress应用程序逻辑:所有文件只能由您的用户帐户写入。
/wp-content/
用户提供的内容:可由用户帐户和Web服务器进程写入。
在其中
/wp-content/
您会发现:
/wp-content/themes/
主题文件。如果要使用内置主题编辑器,则所有文件都必须可由Web服务器进程写入。如果您不想使用内置主题编辑器,则所有文件只能由您的用户帐户写入。
/wp-content/plugins/
插件文件:所有文件只能由您的用户帐户写入。
可能存在的其他目录
/wp-content/
应该由要求它们的插件或主题来记录。权限可能有所不同。
对于其主目录下有其wordpress根文件夹的用户:
** Ubuntu / Apache
您想呼叫usermod
您的用户。因此将是:
sudo usermod -aG www-data yourUserName
**假设www-data
组存在
检查您的用户是否在www-data
组中:
groups yourUserName
您应该得到类似以下内容:
youUserName : youUserGroupName www-data
** youUserGroupName通常类似于您的用户名
递归更改wp-content文件夹的组所有权,保留您的用户所有权
chown yourUserName:www-data -R youWebSiteFolder/wp-content/*
将目录更改为youWebSiteFolder / wp-content /
cd youWebSiteFolder/wp-content
递归更改文件夹和子文件夹的组权限以启用写权限:
find . -type d -exec chmod -R 775 {} \;
/ home / yourUserName / youWebSiteFolder / wp-content /的**模式从0755(rwxr-xr-x)更改为0775(rwxrwxr-x)
递归更改文件和子文件的组权限以启用写权限:
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。
ps如果有人'could not create directory'
在更新插件时遇到错误,请执行以下操作:
server@user:~/domainame.com$ sudo chown username:www-data -R wp-content
当您位于域的根目录时。
假设:在LocalHost上wp-config.php
具有
FTP凭据
define('FS_METHOD','direct');
最好阅读https://wordpress.org/support/article/changing-file-permissions/上的wordpress文档
- 所有文件应归实际用户帐户所有,而不是用于httpd进程的用户帐户所有
- 除非对Web服务器进程权限检查有特定的组要求,否则组所有权无关紧要。通常不是这种情况。
- 所有目录应为755或750。
- 所有文件应为644或640。例外:wp-config.php应为440或400,以防止服务器上的其他用户读取它。
- 永远不要给目录777,甚至不要上传目录。由于php进程以文件所有者的身份运行,因此它获得了所有者权限,甚至可以写入755目录。
我将权限设置为:
# 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默认用户,后者阻止了从网络访问该用户拥有的那些文件。
然后,它授予apache用户处理上传文件夹的权限,并最终设置足够安全的文件和文件夹权限。
已编辑
如果您使用的是W3C Total 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
这样就可以了!
已编辑
在开发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 =您的当前用户和根组
这些权限将使您可以直接在themes
和your-plugin
文件夹下进行开发,而无需征求许可。其余内容将由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 {} \;
该文件的正确权限是644该文件夹的正确权限是755
要更改权限,请使用terminal和以下命令。
find foldername -type d -exec chmod 755 {} \;
find foldername -type f -exec chmod 644 {} \;
文件夹为755,文件为644。
我认为以下规则建议用于默认的wordpress网站:
对于wp-content内的文件夹,设置0755权限:
chmod -R 0755插件
chmod -R 0755上传
chmod -R 0755升级
让apache user成为上述wp-content目录的所有者:
chown apache上传
chown apache升级
chown apache插件
实际上,这取决于您计划使用的插件,因为某些插件会更改wordpress的根文档。但通常我会为wordpress目录推荐类似的内容。
这将为每个文件/文件夹中的用户分配“ root”(或您正在使用的任何用户),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
这会将“ html”文件夹中的每个文件(包括子目录中的文件)的权限设置为644,因此外部人员无法执行任何文件,修改任何文件,组无法执行任何文件,修改任何文件并且仅允许用户修改/读取文件,但即使用户也无法执行任何文件。这很重要,因为它阻止了“ html”文件夹中的任何类型的执行,而且由于html文件夹和除wp-content文件夹以外的所有其他文件夹的所有者都是“ root”(或您的用户),因此www-data可以t修改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”(网络服务器)授予临时权限以进行更新/安装,然后还原完成后,返回到“ root”或您的用户。
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 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
$(whoami)
代替ftp-user
。默认情况下,如果您使用自己的服务器(本地,vps等),则当前用户(不是root)是FTP用户
要绝对确保您的网站是安全的,并且您使用了正确的文件夹权限,请使用以下安全插件:
https://zh-TW.wordpress.org/plugins/all-in-one-wp-security-and-firewall/
https://zh-TW.wordpress.org/plugins/wordfence/
这些插件将扫描您的Wordpress安装并通知您任何潜在的问题。这些还会警告您任何不安全的文件夹权限。除此之外,这些插件将向您推荐应为文件夹分配哪些权限。
我无法告诉您这是否正确,但是我正在通过Google Compute App Engine使用Bitnami图像。我在插件和迁移方面遇到问题,并且在通过chmod的权限进一步搞乱之后,我发现了这三行内容可以解决我的所有问题。不知道这是否正确,但对我有用。
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 {} \;
在wp_config文件中定义。
/var/www/html/Your-Project-File/wp-config.php
define( 'FS_METHOD', 'direct' );
chown-更改文件/目录的所有权。就是 文件/目录的所有者更改为指定的目录,但不会修改权限。
sudo chown -R www-data:www-data /var/www
基于我自己网站上的所有阅读和苦恼,以及被黑客入侵之后,我得出了以上列表,其中包括对Wordpress安全插件Wordfence的许可。(不附属)
在我们的示例中,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上正常工作,但是由于与Ubuntu 16.04捆绑在一起的php7.0-ssh2问题而无法在PHP7.0上使用,我找不到如何安装正确的版本并使之正常工作。幸运的是,一个非常可靠的名为ssh-sftp-updater-support的插件(免费)使使用SFTP的自动更新成为可能,而无需libssh2。因此,除非在极少数情况下需要,否则不必放宽上述权限。