我查看了here,但没有找到有关最佳文件权限的任何详细信息。我还看了一些关于here too的WordPress表格的问题,但任何暗示777的人显然都需要一点安全教训。
总之我的问题是这个。我应该拥有以下权限:
然后是每个文件夹中的所有文件?
答案 0 :(得分:418)
设置WP时,您(网络服务器)可能需要对文件进行写访问。因此访问权限可能需要松散。
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 的用户,无论您做什么,请确保文件具有 www-data 的rw权限。
答案 1 :(得分:52)
将所有wp文件的完全访问权限授予www-data
用户(在本例中为Web服务器用户)可能很危险。
所以要做 NOT 这样做:
chown www-data:www-data -R *
但是,当您安装或升级WordPress及其插件时,它会很有用。但是当你完成它时,保持Web服务器拥有的wp文件不再是一个好主意。
它基本上允许Web服务器放置或覆盖您网站中的任何文件。 这意味着如果有人设法使用Web服务器(或某些.php脚本中的安全漏洞)将某些文件放入您的网站,则有可能接管您的网站。
为了保护您的网站免受此类攻击,您应该执行以下操作:
所有文件都应归您的用户帐户所有,并且应该是可写的 由你。任何需要WordPress写入权限的文件都应该是 Web服务器可写,如果您的主机设置需要它,那 可能意味着这些文件需要由所使用的用户帐户拥有 通过Web服务器进程。
/
根WordPress目录:所有文件只能由您的用户帐户写入,但.htaccess除外,如果您想要WordPress 自动为您生成重写规则。
/wp-admin/
WordPress管理区域:所有文件只能由您的用户帐户写入。
/wp-includes/
大量WordPress应用程序逻辑:所有文件只能由您的用户帐户写入。
/wp-content/
用户提供的内容:旨在由您的用户帐户和Web服务器进程写入。
在
/wp-content/
内你会发现:
/wp-content/themes/
主题文件。如果要使用内置主题编辑器,则所有文件都需要由Web服务器进程写入。如果你不 想要使用内置主题编辑器,所有文件只能是可写的 由您的用户帐户。
/wp-content/plugins/
插件文件:所有文件只能由您的用户帐户写入。
/wp-content/
可能出现的其他目录应该是 由任何插件或主题记录都需要它们。权限可以 而变化。
答案 2 :(得分:25)
对于那些在其主文件夹下有wordpress根文件夹的人:
** Ubuntu / apache
信用Granting write permissions to www-data group
您想要为您的用户拨打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 {} \;
递归更改文件和子文件的组权限以启用写入权限:
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 foldername
对于文件,权限将为664,对于目录,权限将为775。
P.S。如果有人在更新插件时遇到错误'could not create directory'
,请执行:
server@user:~/domainame.com$ sudo chown username:www-data -R wp-content
当你在你的域的根源时。
假设: wp-config.php
有
FTP credentials on LocalHost
define('FS_METHOD','direct');
答案 3 :(得分:15)
我将权限设置为:
# 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创建了一个特定用户,该用户与防止从Web访问该用户拥有的文件的apache默认用户不同。
然后它授予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网站后,我建议每个环境使用不同的文件权限:
在生产中,我不会授权用户修改文件系统,我只允许他们上传资源并访问一些插件特定的文件夹来进行备份等。但是在Git下管理项目并使用deploy在服务器上的密钥,它不是很好的升级插件,也不是生产。我在这里留下了生产文件设置:
# 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 {} \;
答案 4 :(得分:15)
最好阅读关于此https://codex.wordpress.org/Changing_File_Permissions
的wordpress文档
- 所有文件应由实际用户的帐户拥有,而不是用于httpd进程的用户帐户
- 除非有针对Web服务器进程权限检查的特定组要求,否则组所有权无关紧要。通常情况并非如此。
- 所有目录应为755或750。
- 所有文件应为644或640.例外:wp-config.php应为440或400,以防止服务器上的其他用户阅读它。
- 不应该给777目录,甚至上传目录。由于php进程作为文件的所有者运行,因此它获得了所有者权限,甚至可以写入755目录。
答案 5 :(得分:9)
文件的正确权限是644 该文件夹的正确权限是755
要更改权限,请使用终端和以下命令。
find foldername -type d -exec chmod 755 {} \;
find foldername -type f -exec chmod 644 {} \;
755用于文件夹,644用于文件。
答案 6 :(得分:7)
我认为以下规则建议用于默认的wordpress网站:
对于wp-content内的文件夹,设置0755权限:
chmod -R 0755插件
chmod -R 0755上传
chmod -R 0755升级
让apache用户成为上述wp-content目录的所有者:
chown apache uploads
chown apache升级
chown apache插件
答案 7 :(得分:7)
它实际上取决于您计划使用的插件,因为某些插件会更改wordpress的根文档。但通常我会为wordpress目录推荐这样的东西。
这将分配&#34; root&#34; (或者你正在使用的任何用户)作为每个文件/文件夹中的用户,R表示递归,因此它不会停留在&#34; html&#34;夹。如果你没有使用R,那么它只适用于&#34; html&#34;目录。
sudo chown -R root:www-data /var/www/html
这将设置&#34; wp-content&#34;的所有者/组。到&#34; www-data&#34;从而允许Web服务器通过管理面板安装插件。
chown -R www-data:www-data /var/www/html/wp-content
这将在&#34; html&#34;中设置每个文件的权限。文件夹(包括子目录中的文件)到644,所以外面的人不能执行任何文件,修改任何文件,组不能执行任何文件,修改任何文件,只允许用户修改/读取文件,但即使用户也无法执行任何文件。这很重要,因为它可以防止在&#34; html&#34;中执行任何类型的操作。文件夹,因为html文件夹的所有者和除wp-content文件夹之外的所有其他文件夹都是&#34; root&#34; (或您的用户),www-data无法修改wp-content文件夹之外的任何文件,因此即使Web服务器中存在任何漏洞,并且有人未经授权访问该网站,他们也可以&# 39;删除插件以外的主站点。
sudo find /var/www/html -type f -exec chmod 644 {} +
这将限制访问&#34; wp-config.php&#34;用户/组用rw -r -----这些权限。
chmod 640 /var/www/html/wp-config.php
如果插件或更新抱怨它无法更新,则访问SSH并使用此命令,并授予&#34; www-data&#34; (Web服务器)通过管理面板更新/安装,然后恢复到&#34; root&#34;或者您的用户一旦完成。
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/
使用此代码保护&#34; wp-admin&#34;带密码的文件夹,如果您尝试访问&#34; wp-admin&#34;现在会询问密码/用户名。注意,在这里你使用&#34; .htpasswd&#34;包含加密密码的文件。
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
答案 8 :(得分:2)
命令:
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
答案 9 :(得分:2)
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
答案 10 :(得分:1)
我无法告诉您这是否正确,但我使用的是Bitnami图片而不是Google Compute App Engine。我在插件和迁移方面遇到了问题,在通过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 {} \;
答案 11 :(得分:1)
对于OS X,请使用以下命令:
sudo chown -R www:www /www/folder_name
答案 12 :(得分:1)
要绝对确保您的网站安全并且您对文件夹使用了正确的权限,请使用以下安全插件:
https://en-ca.wordpress.org/plugins/all-in-one-wp-security-and-firewall/
https://en-ca.wordpress.org/plugins/wordfence/
这些插件将扫描您的Wordpress安装并通知您任何潜在的问题。这些也会警告您任何不安全的文件夹权限。除此之外,这些插件还会建议您为文件夹分配哪些权限。
答案 13 :(得分:1)
在wp_config文件中定义。
/var/www/html/Your-Project-File/wp-config.php
define( 'FS_METHOD', 'direct' );
chown - 更改文件/目录的所有权。 IE浏览器。文件/目录的所有者更改为指定的所有者,但它不会修改权限。
sudo chown -R www-data:www-data /var/www
答案 14 :(得分:0)
基于我自己网站上的所有阅读和痛苦以及被黑客攻击后,我提出了上面的列表,其中包括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可以访问其日志。 uploads目录也可以通过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-ssh2 bundeld与Ubuntu 16.04的问题而与PHP7.0打破,我无法找到如何安装正确的版本并使其成为现实工作。幸运的是,一个名为ssh-sftp-updater-support(免费)的非常可靠的插件可以使用SFTP进行自动更新,而无需libssh2。因此,除非在极少数情况下根据需要,否则不必放松上述权限。