【问题标题】:WordPress file permissions on CentOS7 requiring sudoCentOS7 上的 WordPress 文件权限需要 sudo
【发布时间】:2017-01-31 22:17:07
【问题描述】:

我正在使用 CentOS 7 LAMP 堆栈在我的 VPS 上运行 WordPress。我已按照 this guide 设置权限,即我已运行

sudo chown apache:apache -R * 确保我的 wordpress 目录归 apache:apache 所有。

我还使用这些命令设置了 WordPress 目录和文件权限:

find . -type d -exec chmod 755 {} \;

find . -type f -exec chmod 644 {} \;

(我必须在上面的命令前加上sudo

我通常通过使用myuser 的SSH 登录来管理服务器,其中myuser 属于apache 组和wheel 组。

我有 3 个问题:

  1. WordPress 目录中的任何文件 CRUD 命令仍然需要我在命令前加上 sudo,否则我会收到权限错误。由于myuser 属于apache 并且apache 拥有该目录,我很困惑为什么我仍然需要在命令前加上sudo
  2. 与问题 1 类似,任何 git 命令(例如 git pull)都要求我在命令前加上 sudo 前缀,否则会出现权限错误。
  3. 当我尝试从我的 WordPress 仪表板 Web 界面自动更新主题文件时,我收到权限错误。有趣的是,我可以通过 WordPress 仪表板安装/更新插件,而不会出现任何权限错误。

关于我缺少什么的任何想法?

【问题讨论】:

  • 我认为这与 wordpress 本身没什么关系,所以问它是一个更好的地方
  • @MarkKaplun 根据the help filesWordPress 的服务器配置 是主题。我想您也可以争辩说这是一个通用的服务器配置和管理问题,不会成为话题。
  • 我真的很讨厌那些在法庭上假装自己是律师的人。并非世界上每个地方都是电视剧的取景地
  • @MarkKaplun 好吧,如果我的评论冒犯了你,我想我会道歉。 tbh 我不确定我的问题在这个论坛中是否合适,既然你建议它不合适,我只是在寻找一些已发布的指南以供参考。
  • 如果其他人想在这个问题上提供一些帮助,请这样做。如果没有,我很乐意在其他地方问。事实上,我曾问过 serverfault,但我没有得到太多帮助。

标签: wordpress permissions centos


【解决方案1】:

我也遇到过这个问题,并通过更改 PHP 处理程序解决了这个问题。

使用以文件所有者身份运行的 PHP 处理程序很重要。

在途中安装了 HTTP2 和其他一些功能后,我更改了 PHP 处理程序。

我在我的 VPS 上运行 WHM/CPanel,我按照以下步骤解决了我的问题:

  1. WHM下>Software>EasyApache 4>Customize

    Apache Modules 标签下查找:mod_suphp 并确保它已启用,如果您刚刚打开它进行安装,请按照第二步操作。

  2. 转到Review 标签并单击Provision 按钮进行保存。

  3. Whm > Software > MultiPHP Manager 下查找PHP Handlers 标签。

  4. 选择 suphp 作为当前 PHP 版本的处理程序。

就是这样。它是 PHP 处理程序。

编辑:我注意到suphp 与我的一个用户上传目录发生冲突,我正在向图像动态添加水印。 suphp 处理程序似乎有权上传但不显示图片。 我还为 PHP 处理程序尝试了lsapi,它似乎可以正常使用文件的权限并通过 .htaccess 文件水印附加图像。

【讨论】:

    【解决方案2】:
    chown -R -f user:apache /path of the directory
    

    【讨论】:

    • 最好解释一下命令以及它如何解决问题。
    • 您不应授予 wordpress 任何权限。只需将 wordpress 文件夹放在服务器上并将所有权更改为用户(如命令中所写)
    • 好的,edit 答案并在答案中添加描述。这样,未来的读者就可以在答案本身中看到描述。
    【解决方案3】:

    @fortuneRice,CentOS7 默认启用 selinux,这往往是很多难以理解的文件权限错误的原因。

    我建议如下:

    1. 编辑 /etc/sysconfig/selinux
    2. 将 SELINUX=permissive(或文件中当前设置的任何 SELINUX)更改为 SELINUX=disabled
    3. 重新启动您的服务器(不仅仅是 apache Web 服务器,而是整个机器)

    完全禁用 SELINUX 不是一个好主意,因此如果此过程有效,您应该重新启用 SELINUX 并修复其配置。

    配置 SELINUX 可能是一项艰巨的任务,所以我建议你在 google 上阅读如何做到这一点:)

    【讨论】:

      【解决方案4】:

      看:What does mode_t 0644 mean?

      644 means:
       * (owning) User: read & write
       * Group: read
       * Other: read
      

      CRUD 是一个写命令,所以你不能这样做。您要么更改为 664,要么继续使用 sudo。基本上,如果没有 sudo,文件系统上的任何写入过程都不允许,因为您的用户不是所有者(尽管他在组中)。

      【讨论】:

        猜你喜欢
        • 2016-01-26
        • 2011-04-13
        • 2015-07-18
        • 2020-12-02
        • 2019-05-11
        • 1970-01-01
        • 2013-10-26
        • 2020-05-04
        • 1970-01-01
        相关资源
        最近更新 更多