更正WordPress的文件权限

Joh*_*ord 387 php wordpress chmod

我看过这里,但没有找到关于最佳文件权限的任何细节.我也看了看一些的WordPress的形式的问题,在这里也不过任何人说建议777显然需要在安全一点教训.

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

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

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

Man*_*d3r 478

设置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--
Run Code Online (Sandbox Code Playgroud)

设置完成后,你应该收紧的访问权限,根据硬化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
Run Code Online (Sandbox Code Playgroud)

也许你想稍后更改wp-content中的内容.在这种情况下你可以

  • 暂时将用户改为www-data with su,
  • 给wp-content组写访问权775并加入组www-data
  • 使用ACL为您的用户提供该文件夹的访问权限.

无论您做什么,请确保文件具有www-data的 rw权限.

  • 如果在不更改权限的情况下甚至无法工作,为什么还有自动更新功能? (22认同)
  • 此解决方案将阻止wordpress安装"自动安全更新".您需要为每个次要wordpress更新手动运行上述步骤. (12认同)
  • 这不是安全配置.当apache用户也拥有文件时,设置对这些文件的读取权限没有任何影响!不使用.请参阅https://codex.wordpress.org/Changing_File_Permissions (11认同)
  • @ ManuelSchneid3r,我在wp-content下看到一些PHP文件,这些真的应该可以写成`www-data` ??? 这真的听起来完全不安全. (6认同)
  • Kornel在下面给出了一个这样的权威链接.另请参阅http://codex.wordpress.org/Changing_File_Permissions,Apache的文档http://httpd.apache.org/docs/2.2/misc/security_tips.html,以及几乎所有关于该主题的谷歌搜索.但是在一般情况下,如果有疑问,不给予写访问权(当然也没有所有权)并逐个放松,而不是相反(你在这里违反的最低权限原则). (2认同)

Kor*_*nel 56

www-data用户提供对所有wp文件的完全访问权限(在本例中为Web服务器用户)可能很危险.所以要这样做:

chown www-data:www-data -R *
Run Code Online (Sandbox Code Playgroud)

但是,当您安装或升级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/应该由任何插件或主题需要它们来记录.权限可能会有所不同.

来源和其他信息:http://codex.wordpress.org/Hardening_WordPress

  • @shasikanth不,apache用户是他称之为"Web服务器进程"的用户.用户帐户是您的Linux用户(ssh,ftp用户等) (4认同)

Jad*_*eye 25

对于那些在其主文件夹下有wordpress根文件夹的人:

**Ubuntu/apache

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

CREDIT 向www-data组授予写入权限

您想要呼叫usermod您的用户.那就是:

sudo usermod -aG www-data yourUserName
Run Code Online (Sandbox Code Playgroud)

**假设www-data组存在

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

    groups yourUserName

你应该得到类似的东西:

youUserName : youUserGroupName www-data
Run Code Online (Sandbox Code Playgroud)

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

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

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

  2. 将目录更改为youWebSiteFolder/wp-content /

    cd youWebSiteFolder/wp-content

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

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

**模式`/ home/yourUserName/youWebSiteFolder/wp-content /'从0755(rwxr-xr-x)变为0775(rwxrwxr-x)

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

    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
Run Code Online (Sandbox Code Playgroud)

相当于:

chmod -R ug + rw foldername

权限将为664个文件或775个目录.

如果有人'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');

  • -1.你不*希望www-data能够对wordpress文件进行写访问,wp-content除外. (9认同)

Pod*_*.io 19

最好阅读https://codex.wordpress.org/Changing_File_Permissions上的wordpress文档

  • 所有文件应归实际用户的帐户所有,而不是用于httpd进程的用户帐户
  • 除非对Web服务器进程权限检查有特定的组要求,否则组所有权无关紧要.通常情况并非如此.
  • 所有目录应为755或750.
  • 所有文件应为644或640.例外:wp-config.php应为440或400,以防止服务器上的其他用户读取它.
  • 不应该给777目录,甚至上传目录.由于php进程作为文件的所有者运行,因此它获得了所有者权限,甚至可以写入755目录.

  • 不知道你为什么要投票:这几乎就像人们想要最好的答案是如何离开安装_insecure_! (3认同)

Pab*_*one 14

我将权限设置为:

    # 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 {} \;
Run Code Online (Sandbox Code Playgroud)

在我的例子中,我为WordPress创建了一个特定用户,该用户与防止从Web访问该用户拥有的文件的apache默认用户不同.

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

EDITED

如果您正在使用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
Run Code Online (Sandbox Code Playgroud)

然后它会工作!

EDITED

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

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

# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/uploads/
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

www-data:www-data = apache或nginx用户和组 your-user:root-group =您当前的用户和root组

这些权限将允许您在没有请求权限的情况下访问under themesyour-pluginfolder.其余内容将由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 {} \;
Run Code Online (Sandbox Code Playgroud)

  • 拿去!永远不要做777.请不要向(新)读这篇文章的人建议. (10认同)

Kap*_*ppa 10

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

要更改权限,请使用terminal和following命令.

find foldername -type d -exec chmod 755 {} \;
find foldername -type f -exec chmod 644 {} \;
Run Code Online (Sandbox Code Playgroud)

文件夹为755,文件为644.


Don*_*nga 8

它实际上取决于您计划使用的插件,因为一些插件会更改wordpress的根文档.但通常我会为wordpress目录推荐这样的东西.

这将在每个文件/文件夹中将"root"(或者您正在使用的任何用户)分配为用户,R表示递归,因此它不会停留在"html"文件夹中.如果你没有使用R,那么它只适用于"html"目录.

sudo chown -R root:www-data /var/www/html  
Run Code Online (Sandbox Code Playgroud)

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

chown -R www-data:www-data /var/www/html/wp-content
Run Code Online (Sandbox Code Playgroud)

这会将"html"文件夹(包括子目录中的文件)中的每个文件的权限设置为644,因此外部人员无法执行任何文件,修改任何文件,组无法执行任何文件,只修改任何文件允许用户修改/读取文件,但即使用户也无法执行任何文件.这很重要,因为它可以防止在"html"文件夹中执行任何类型,因为html文件夹的所有者和除wp-content文件夹之外的所有其他文件夹都是"root"(或你的用户),www-data can'修改wp-content文件夹之外的任何文件,因此即使Web服务器中存在任何漏洞,并且有人未经授权访问该站点,他们也无法删除除插件之外的主站点.

sudo find /var/www/html -type f -exec chmod 644 {} +
Run Code Online (Sandbox Code Playgroud)

这将限制使用rw-r -----这些权限访问"wp-config.php"到用户/组的权限.

chmod 640 /var/www/html/wp-config.php
Run Code Online (Sandbox Code Playgroud)

如果插件或更新抱怨它无法更新,则访问SSH并使用此命令,并授予"www-data"(Web服务器)临时权限以通过管理面板更新/安装,然后还原完成后返回"root"或您的用户.

chown -R www-data /var/www/html
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd userName
Run Code Online (Sandbox Code Playgroud)

现在访问这个位置

/etc/nginx/sites-available/
Run Code Online (Sandbox Code Playgroud)

使用此代码用密码保护"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;
}
Run Code Online (Sandbox Code Playgroud)

现在重启nginx.

sudo /etc/init.d/nginx restart
Run Code Online (Sandbox Code Playgroud)


sha*_*nth 7

我认为以下规则建议用于默认的wordpress网站:

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

    chmod -R 0755插件

    chmod -R 0755上传

    chmod -R 0755升级

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

    chown apache上传

    chown apache升级

    chown apache插件