Apache SuexecUserGroup 和 Fedora 上的 Joomla 组权限

Apache SuexecUserGroup 和 Fedora 上的 Joomla 组权限

我在装有 apache-2.4 和 joomla-3.9 的 fedora28 系统上遇到了权限和所有权问题。我希望能够只拥有 apache 所需的最少数量的文件,并让 ssh/sftp 用户有权读取和写入文档根目录中的每个文件。

我正在尝试解决两个问题:

  • 为 ssh/sftp 用户提供在文档根目录中写入文件的能力
  • 仅向 Apache 提供写入/删除文件所需的最小能力,但不限制读取

问题是,创建具有 664 所有权的文件会导致许多扩展(如 Akeeba Backup)抱怨文件太宽松并坚持必须是 644。

我已经加载了 mod_suexec 并使用“Suexec on”启用它,并将 SuexecUserGroup 配置为 ssh/sftp 用户的名称和“apache”:

SuexecUserGroup ftpuser apache

然后将所有文件和目录的所有权更改为 ftpuser.apache,但这仅在文件由 ftpuser 创建或修改时才有效。

然后,我仔细检查并将所有权设置为 Apache 正常运行所需的读/写访问权限的几个特定文件。

#!/bin/bash

PLACES='
administrator/backups
administrator/components
administrator/modules
administrator/templates
administrator/language
administrator/cache
cache
components
images
images/banners
images/stories
language
media
modules
templates
tmp
'
for i in $PLACES; do chown -R apache:apache $i; chmod g+w $i; done

chmod g+w tmp components language language/en-GB logs modules 
administrator/components administrator/language \
    administrator/language/en-GB

即使以这种方式配置了 suexec,apache 也无法删除 ftpuser 拥有的具有权限 644 的文件。Apache 在进行升级或扩展更新时需要具有写入超出列出的内容的能力。

问题是 apache 服务器以用户 apache 身份运行,因此它写入的任何文件都必须归 apache 用户所有,假设权限为 644 或 755。

我考虑在这里使用 sgid,将所有目录的权限更改为 2775,这样 apache 用户创建的任何文件都将保留 apache 组所有权和 664 权限,但这无助于安全性,也无法让 Akeeba Backup 对 644 权限问题感到满意。

大多数服务提供商(如 SiteGround)会做什么?他们是否只是将所有内容的所有权更改为运行 apache 的用户,然后为所有 sftp 用户提供相同的 UID?

有没有办法将所有权更改为 apache.apache,将 ssh/sftp 用户添加到 apache 组,并设置所有内容 sgid?

相关内容