【问题标题】:Why do apache owned files get created by wordpress?为什么 apache 拥有的文件是由 wordpress 创建的?
【发布时间】:2013-01-31 19:30:45
【问题描述】:

我偶尔会遇到这个问题,我使用主机提供给我的 FTP 帐户并在 Wordpress FTP 中使用它们。但是由于某些原因,例如在更新主题时,新主题是在 apache/apache 下创建的,而不是在 user/psacln 用户名/组下创建的。所以那时我不能删除这些文件或对这些文件做任何事情,因为我在 psacln 组下。

我想了解更多关于为什么会发生这种情况以避免这个问题 - 欢迎任何建议!

提前致谢。

【问题讨论】:

    标签: wordpress apache permissions ftp


    【解决方案1】:

    因为 apache 的工作子进程在 apache 的用户 ID 下运行,而 unix 系统上的“普通用户”不能使文件归某个 OTHER 用户所有。只有 root 帐户可以“放弃”所有权。

    为什么?对于普通用户来说,创建一个由 root 拥有或由另一个用户拥有的文件是微不足道的。如果给定系统以用户配额运行,这将允许用户完全破坏配额,或者通过“给”他们一堆大文件并超过该用户的配额来拒绝其他人访问。

    如果您需要访问这些文件,无论 unix 所有权如何,您都可以考虑使用高于/超出 unix 权限的 POSIX acl。

    【讨论】:

    • 干杯!是的,这是有道理的。但是在大多数情况下,我在有限的环境中(在客户端的共享主机上)面临这个问题 - 所以我自己无法访问任何花哨的命令/设置权限。
    【解决方案2】:

    当您通过 wordpess 管理页面(如主题)上传文件时,以 apache 用户身份运行的 httpd 进程实际上是在您的系统上创建它们——因此它们归 apache 用户所有。我建议使用此选项来解决此问题:

    1. 将您自己和 apache 添加到名为“wordpress”的新组中
    2. 用于将您的 wordpress 的群组所有权更改为新群组
    3. 使用设置 sgid 权限位和组对 wordpress docroot 中所有目录的写入权限。

    sgid 位的设置将使添加到一个目录的所有文件成为同一个组所有者。

    假设您已将自己和 apache 添加到同一个组,这里是用于设置目录以确保创建的文件对 wordpress 组中的所有人可写的 linux 命令:

    chown -R :wordpress /path/to/wordpress/docroot/ 
    chmod  -R g+w /path/to/wordpress/docroot/
    find  /path/to/wordpress/docroot/ -type d -print | while read i; do SAVEIFS=$IFS; IFS=$(echo -en "\n\b");chmod g+s $i; IFS=$SAVEIFS; done
    

    可能需要的其他东西:

    如果您看到 apache 在没有写入的情况下创建具有组权限的文件,您可能需要更改 apache 用户的默认 umask 以创建新文件。默认情况下,它应该是允许所有者和组写入的,但我知道某些帐户(如 root 用户)的默认 umask 设置为组只读。

    【讨论】:

    • 感谢您的命令!但是你看,90% 的时间我都无法控制服务器环境(例如,没有 shell 访问权限),因为客户端可能会使用 Namesco 等运行廉价的东西。我想这将是解决问题的一种方法 - 但可以肯定的是,我不是唯一一个,必须有一种方法可以在没有 root 访问权限的有限环境中工作。
    • 那么渣渣Wordpress为什么会这样呢?我必须下载文件夹并通过 FileZilla 重新上传,这样我才能处理这些文件,嗯...
    猜你喜欢
    • 1970-01-01
    • 2013-05-10
    • 2012-10-13
    • 2020-06-12
    • 1970-01-01
    • 2019-02-27
    • 2017-03-20
    • 2017-12-23
    • 2016-04-13
    相关资源
    最近更新 更多