如何在 CentOS 上设置 FTP/Apache/PHP 的文件权限/所有权

如何在 CentOS 上设置 FTP/Apache/PHP 的文件权限/所有权

chmod我对CentOS 文件权限有基本的了解。 777 代表 111111111,rwx代表每个 root、组、用户等。我无法理解的是如何设置 Apache、FTP 和 PHP 以便它们都能正常工作。

我有一个 proFTPd 服务器和 Apache 服务器。我应该如何在 proFTPd 服务器上设置权限,以便 Apache 服务器可以读取和执行 PHP 文件?在我的初始设置中,Apache 无法读取通过 FTP 上传的文件。我应该把FTP用户和apache服务器放在一个组中吗?

权限系统 (FTP-Apache-PHP) 在标准托管系统上如何工作?

答案1

不要试图让 ftp 与 apache 一起工作,而是采取另一种最安全的方法。

使用 suPHP 和 suExec 将使您的 apache 使用该用户来制作它需要的任何内容,并且 ftp 已经使用该用户本身。

以下是如何在 centOS 上使用 suPHP 编译 apache: http://markus.revti.com/2010/03/installing-suphp-on-centos-5/

如果您的列表中有正确的存储库,您可以尝试:yum install mod_suphp

看起来相当简单的操作方法,我怀疑您会遇到麻烦。

如有任何疑问,请告诉我,我将尽我所能为您提供帮助。

有关 suPHP 的更多信息。

有关 suExec 的更多信息。

答案2

Apache 作为特定用户(通常是 httpd)运行,但根据其配置方式,PHP 可以作为相同或不同的用户运行:

  • 如果 PHP 作为模块运行,那么它将与 Apache 是同一个用户。
  • 如果 PHP 作为 CGI 运行(非常罕见),那么它通常会作为同一用户运行,除非 Apache 配置为使用 suexec(在这种情况下,用户将在配置中)。
  • 如果 PHP 作为 FastCGI 运行,那么它将以其配置的任何用户身份运行。

suPHP 使情况变得更加复杂,它与 CGI 的情况类似,只不过脚本是使用拥有脚本文件的 uid 运行的。

这里的限制是:

  1. Web 服务器 uid(和 PHP uid)可写的目录/文件应该非常有限,并且在这些可写的地方应该特别考虑避免代码注入攻击。

  2. 通常普通用户无法将文件写入不同的 uid - 并且可能需要维护 PHP 代码文件(即用户可写)。

请注意,PHP 文件是否可由网络服务器执行与文件上的可执行位无关(但与包含该文件的目录上的可执行位有很大关系)。

我应该把FTP用户和apache服务器放在一个组中吗?

可能不会。我建议将网络服务器/PHP 视为“其他” - 因此对于网络服务器可以访问的任何内容(包括 PHP),权限应该是:

  • 用户:读、写
  • 组:取决于您的政策
  • 其他读

IE0644(与上面的可执行权限不相关),对于目录:

  • 用户:读、写、执行
  • 组:取决于您的政策
  • 其他:读取、执行

IE0755

相关内容