每次上传文件/插件后,wordpress 目录文件所有权都会发生变化

每次上传文件/插件后,wordpress 目录文件所有权都会发生变化

在 centos 7 上,我创建了具有根目录所有权的 wordpress 网站网站名称:网站组和目录权限755、文件权限644默认设置

当开发人员登录到 wordpress 仪表板并尝试将某些内容上传到媒体或安装插件时,wp 说没有写入权限,

然后我必须授予 wp 根目录的 g+w 权限,然后他才能安装插件或上传媒体。

上传媒体后,上传的插件/媒体权限更改为阿帕奇:阿帕奇网站名称:网站组

如何避免?

  1. 我授予 wp 根目录 g+x 权限,以让开发人员安装插件/上传媒体
  2. 并且任何来自 wp dashboar 上传的所有权都不应更改为 apache:apache

我尝试过

目前我找不到其他方法来阻止这种情况,每次我都必须授予 g+w 权限,然后在开发人员工作后将其恢复

答案1

Web 服务器(或 PHP 进程,取决于您的设置)需要对该目录具有写入权限。唯一可行的方法是以用户身份运行该进程websitename

apache原则上,另一种选择是通过 ACL 或将其添加到组来授予用户写入权限websitegroup,但这也会导致上传的文件归apache。 如果您希望所有文件和文件夹都归 ,websitename则需要以该用户的身份运行 Web 服务器。

答案2

您对如何配置的描述毫无帮助。让我们从头开始。

用户:

  • apache - PHP 运行时执行的 uid
  • dev1、dev2、dev2 - 开发人员
  • 备份 - 用于创建网站备份
  • 支持[n] - 用于调查问题

由于 Wordpress 的设计方式,除非“apache”对该站点具有完全的读/写访问权限,否则很难操作。

如果所有管理都是通过 Web UI 完成的,那么开发人员确实需要任何访问文档根目录中的文件。但是,我见过开发人员经常使用 CLI 访问更新文件的网站。因此,我们假设他们需要读/写访问权限。

备份用户需要对文件具有只读访问权限。

支持需要对文件的只读访问权限。

那就只剩下网站用户了。这是你的构造。由于缺乏有关你如何使用它的附加信息,它似乎完全是多余的。

因此,唯一的访问类别是读写和只读。但为了好玩,我们假设还有一个无访问权限的类别 - 并将此用户称为“外星人”。

用户所有权始终由创建文件的 uid 决定 - 并且每个用户只有一个值。因此我们不能将其用作允许访问的机制。

但是用户可以属于多个组,每个组可以有多个用户。因此,我们可以将读写权限与特定组关联。将其命名为 webupdate。

剩下的是只读访问权限(备份和支持) - 可以通过“其他”权限位提供。

但你如何排除“外星人”呢?通过将网站放在外星人无法访问的目录中 - 这意味着我们需要另一个组来识别拥有一些访问。将其称为 webaccess。

因此小组成员资格:

  • webupdate:apache,dev1,dev2…devn
  • webaccess:apache,dev1,dev2…devn,备份,支持[n]

然后我们就有了目录、权限和所有权:

drwxr-x--- root:webaccess /var/www/SITENAME
drwxrwxr-x ????:webupdate /var/www/SITENAME/html  (document root)

一切都很好,但是当“webupdate”中的某个人在文档根目录中创建新文件或目录时,组所有权将是他们的默认组 - 而不是 webupdate。您可以使用目录上的 setgid 位来更改此行为:

drwxrwSr-x ????:webupdate /var/www/SITENAME/html

难题的最后一部分是确保 webupdate 成员的 umask 设置为 00x,以便新文件和目录获得正确的权限)。不要忘记在 sshd_config 中为 sftp 服务器以及交互式 shell 设置此项。

因此,一旦您建立了组,您就可以运行:

chown -R apache:webupdate  /var/www/SITENAME/html
chmod -r g+s /var/www/SITENAME/html

就是这样 - 您永远不必再修复权限。

相关内容