TYPO3、Plesk 和权限

Posted

技术标签:

【中文标题】TYPO3、Plesk 和权限【英文标题】:TYPO3, Plesk and permissions 【发布时间】:2012-02-13 19:58:16 【问题描述】:

我在旧的 TYPO3 v. 4.2.9 上遇到权限问题。另外,我有 Plesk 控制面板 8.6。用户是 ftp 用户,组是 psacln。使用 CGI php (php_sapi_name();)。 PHP 支持(安全模式)、CGI 支持和 Perl 支持已激活(显示在虚拟主机设置下)。

我不知道它是否正确,但目前似乎有效:

757 在以下文件夹中:

文件管理 文件管理员/_temp_ fileadmin/templates(以及所有子文件夹 -files) 文件管理员/自定义文件夹 typo3(以及所有子文件夹-文件) typo3conf typo3conf/ext(以及所有子文件夹-文件) typo3conf/l10n(以及所有子文件夹-文件) typo3temp 上传 上传/媒体 上传/图片 上传/tf

所有其他文件夹有 750,所有其他文件有 644。

如果我不使用这些权限,我会得到 access deniedCannot find tslib/. Please set path by defining $configured_tslib_path in index.php.

Here 写的是你应该使用用户wwwrun 而不是 ftp 用户,如果你需要用你的 ftp 用户更改一些文件,请切换到 646。但我认为没有wwwrun这样的用户。

我上传了一个文件,它的所有者为 ftpuser,权限为 644。

问题:

为什么我必须设置这么高的权限?问题是我需要拥有如此高的权限,以至于 apache 用户不是 ftp 用户,否则它不起作用?有没有办法让 ftp 和 apache 使用相同的用户? 只有旧的 TYPO3 v. 4.2 需要这么高的权限吗?还有其他方法可以更改为较低的权限吗? 我做错了什么?

【问题讨论】:

【参考方案1】:

我为什么要设置这么高的权限?

如果配置好,您就不会。 typo3t3lib 需要是只读的。 fileadmintypo3conftypo3tempuploads 需要是可写的,但对运行 PHP 的用户。

问题是我需要拥有如此高的权限,以至于 apache 用户不是 ftp 用户,否则它不起作用?

恕我直言,由于 PHP 作为 CGI 运行,它实际上在与 Apache 不同的用户下运行。由于文件由 PHP 生成并具有其权限,因此 Apache 可能无法读取它们。因此,您应该将 Apache 和 PHP 在同一个组中,并在每个组的基础上设置文件和权限。

难道没有办法让 ftp 和 apache 使用相同的用户吗?

这是您的主持人的问题。不过应该由同一组完成。

只有旧的 TYPO3 v. 4.2 需要这么高的权限吗?

我认为v4.2和新版本在这方面没有任何区别。

还有其他方法可以更改为较低的权限吗?

是的,检查谁是谁。您最多可能涉及 3 个用户:Apache、PHP、FTP 用户。要访问彼此创建的文件,它们需要在同一个组中,并且文件需要为该组设置权限。然后检查 TYPO3 设置以创建新文件夹和文件:

$TYPO3_CONF_VARS['BE']['createGroup'] = 'group_of_your_users';
$TYPO3_CONF_VARS['BE']['fileCreateMask'] = '0770';
$TYPO3_CONF_VARS['BE']['folderCreateMask'] = '0770';

【讨论】:

现在我尝试在文件夹上设置 0755 并在文件上设置 0644 并且它可以工作。 createGroup 是空的,fileCreateMask 是 0644,folderCreateMask 是 0755。在我尝试在文件夹中使用 0750 并在文件中使用 0640 之前,但这没有用。似乎 Apache/PHP 不在此主机上的同一组中(因为其他人需要读取权限)。使用 0755 只有所有者有写权限,所以似乎 PHP 用户是所有者(和 FTP 用户是同一个用户?)。感谢您的回答!它让事情变得更加清晰。 检查typo3temp 文件夹中新创建的文件以查看它们的所有权。将其与运行 Apache 的 FTP 用户和用户/组创建的文件进行比较。这应该让您清楚地了解谁是谁以及谁可以访问什么。然后,您可以尝试更改这三个 TYPO3 配置选项来调整由 TYPO3 创建的文件的权限和所有权。 另外,您应该瞄准不允许“其他人”读取文件的权限。只有所有者和组成员才能访问文件。 用户 Apache 运行可能不会在 phpinfo() 中提及,因为 PHP 作为 CGI 运行,因此请询问 webhoster/admin。 Apache 很可能只需要读取文件,因此如果您将 $TYPO3_CONF_VARS['BE']['createGroup'] 设置为 Apache 所属的那个,那么一切都应该正常工作。您将面临的唯一问题是 FTP 用户上传的文件,恕我直言,您将无法通过 FTP 设置正确的组。您要么必须使用其他工具,要么对通过 FTP 上传的文件设置不太严格的权限。 0750 怎么样?它有效吗? 如果是,则不必使其更紧。 如果没有,关闭安全模式对这些权限有帮助吗?从理论上讲,SSH 和 FTP 用户之间可能存在差异,但我认为大多数网络托管服务商都不会出现这种情况。只需比较 SSH 和 FTP 用户创建的文件的所有权。

以上是关于TYPO3、Plesk 和权限的主要内容,如果未能解决你的问题,请参考以下文章

Plesk:访问外部公共文件夹

每个域和子域的 Plesk nginx 配置

Plesk:如何将域端口 80 和 443 重定向到我的 Docker 容器?

Plesk 与本地 PC 上的 MariaDB 慢查询

Plesk 服务器 open_basedir 块

phpmyadmin在plesk中配置文件位置