【问题标题】:A general linux file permissions question: Apache and WordPress一个通用的 linux 文件权限问题:Apache 和 WordPress
【发布时间】:2010-11-09 23:10:32
【问题描述】:

几周前我从共享主机转移到 VPS,我遇到了 WordPress 的这些烦人的权限问题。你知道你可以从管理面板下载和升级插件(和 wordpress 本身),但是自从我移动它开始询问我的 FTP 凭据,当我必须更新大约 20 个插件时这有点慢。

我认为这应该是某种权利问题。我查看了共享主机的wordpress文件,它们都属于用户名和组kovshenin(kovshenin:kovshenin),文件是-rw-r--r--,目录是drwx-r-xr-x。

在我的 VPS 上,apache 在 apache:apache 下运行,我的文件是 kovshenin:kovshenin。我应该怎么做才能使它们对 kovshenin 和 apache 都可读和可写?

此外,我将 wordpress 安装的所有文件和文件夹的权限更改为 0777,这允许我在没有 FTP 的情况下安装和删除插件,但是当我推动自动升级到 WordPress 2.8.1 时,它仍然要求我提供我的FTP 帐户。这是 wp 问题还是我错过了什么?

谢谢。

更新:我设法在 MediaTemple 共享主机上运行 idid www-data。用户 kovshenin 在组 kovshenin 中,而 www-data 在组 www-data 中。没有更多的组。有什么诀窍?

另一个更新好的,我将apache 用户添加到kovshenin 组,我的wordpress 文件是kovshenin:kovshenin,具有rw-rw-r-- 权限和drwxrwxr-x 目录权限,但是有些仍然是错误的。用户 apache 可以访问文件和文件夹,我可以使用 wordpress 管理面板中的在线主题和插件编辑器,我可以从 wordpress 中更改 .htaccess 文件,但插件/主题安装仍然要求我要 FTP 凭据!

有什么想法吗?谢谢。

【问题讨论】:

  • 你是说运行在 apache:apache 下的 apache 可以通过 www-data:www-data 访问 WordPress 文件吗?如果是这样,那么找出它是如何管理它的,并使用 kovshenin:kovshenin 对其进行配置。
  • 没有。 www-data 在共享主机上,apache 在 www-data 下运行。用户 apace 在我的 VPS 上,它在用户和组 apache:apache 下运行。

标签: linux apache wordpress permissions


【解决方案1】:

我应该怎么做才能使它们对 kovshenin 和 apache 都可读和可写?

  • 创建一个新组,说“wordpress”。
  • 将 koveshenin 和 www-data 用户添加到 wordpress 组。
  • 将所有文件的组所有者更改为 wordpress(使用 chgrp)。
  • 确保所有文件都是组可写的。
  • 在所有感兴趣的目录上设置 g+s (setgid) 权限位。
  • 确保 kovshenin 和 apache 的默认 umask 包含组读写权限。

最后第二步是诀窍。这意味着每当 kovshenin 或 apache 在这些目录中创建文件时,组所有者将被设置为 wordpress(而不是 kovshenin 或 apache)。

【讨论】:

  • 好的,这更接近了,非常感谢,但是 Media Temple 共享主机帐户上的用户 www-data 和 kovshenin 怎么没有额外的组?这招叫什么? ;)
  • 很难说,但共享主机帐户可能是使用 phpsuexec 设置的。
  • 嘿,咖啡馆,还有一个问题。我把wp文件夹里所有文件和目录的组属主都改成了apache,属主还是kovshenin,所以是kovshenin:apache,权限是0775,所以kovshenin和apache都有读写和执行文件的权限。工作正常。我做了 g+s 部分,新文件是用 kovshenin:apache 创建的,一切都很好,但是,新文件的权限是 755。我该如何解决 775 的问题?尝试设置 g+ws.. 似乎不起作用。有任何想法吗?再次感谢。
  • 哦,对不起,那一定是 umask.. =)
  • @ChristopherIckes:这意味着无论您使用什么来创建目录,都不会将 setgid 位复制到新目录(标准的 /bin/mkdir 实用程序会这样做)。创建目录后,您可能需要手动chmod g+s
【解决方案2】:

您可以根据here 授予 www-data 的所有权。

在您的 WordPress 目录中运行以下命令(需要 sudo):

sudo chown -Rf www-data *

适用于 Apache。

【讨论】:

  • 效果很好,但是我不能用我的普通用户编辑这些文件,这让我很害怕.. :(
  • 他们不还是属于kovshenin的集团吗?如果可以,您应该仍然可以编辑它们。如果不是,那么您可以尝试让用户 kovshenin 成为他们所拥有的组的成员,并在编辑之前使用 newgrp 将您的组更改为该组。
  • 它们是属于 kovshenin 的组,但我将从用户 kovshenin 上传的新文件将变为 kovshenin:kovshenin,我必须再次 chown。我正在为我的几个客户设置托管,我希望他们的文件是 kovshenin:kovshenin 风格,而不是 apache(或 www-data)。我想知道 MediaTemple 是怎么做到的……
  • 您可以将普通用户添加到 www-data 组,也可以在命令开头附加 sudo。
  • 什么命令?请阅读我正在尝试做的事情,这不是那么简单.. 没有其他组。
【解决方案3】:

假设您的 wordpress 安装目录是/var/www/html 以将所有文件和目录批量更改为正确的权限使用:

sudo  find /var/www/html/ -type d -exec chmod 775 {} \;
sudo  find /var/www/html/ -type f -exec chmod 664 {} \;

要大规模更改所有使用的所有者组:

sudo chgrp -R <desired_username>.<desired_groupname> /var/www/html

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,我解决了它在 plesk 中关闭 PHP 'safe_mode',现在 WP 可以毫无问题地创建文件夹和移动文件了。

    希望对你有所帮助。

    【讨论】:

      【解决方案5】:

      目前,将define('FS_METHOD', 'direct'); 添加到 wp-config.php 可能会奏效。不过,不确定这会在 09 年奏效。请参阅here 了解我使用 nginx 的类似情况。我发现这是必不可少的一步。

      【讨论】:

        猜你喜欢
        • 2013-06-15
        • 2012-05-17
        • 1970-01-01
        • 2015-07-18
        • 2020-12-02
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 2012-09-05
        相关资源
        最近更新 更多