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
看起来相当简单的操作方法,我怀疑您会遇到麻烦。
如有任何疑问,请告诉我,我将尽我所能为您提供帮助。
答案2
Apache 作为特定用户(通常是 httpd)运行,但根据其配置方式,PHP 可以作为相同或不同的用户运行:
- 如果 PHP 作为模块运行,那么它将与 Apache 是同一个用户。
- 如果 PHP 作为 CGI 运行(非常罕见),那么它通常会作为同一用户运行,除非 Apache 配置为使用 suexec(在这种情况下,用户将在配置中)。
- 如果 PHP 作为 FastCGI 运行,那么它将以其配置的任何用户身份运行。
suPHP 使情况变得更加复杂,它与 CGI 的情况类似,只不过脚本是使用拥有脚本文件的 uid 运行的。
这里的限制是:
Web 服务器 uid(和 PHP uid)可写的目录/文件应该非常有限,并且在这些可写的地方应该特别考虑避免代码注入攻击。
通常普通用户无法将文件写入不同的 uid - 并且可能需要维护 PHP 代码文件(即用户可写)。
请注意,PHP 文件是否可由网络服务器执行与文件上的可执行位无关(但与包含该文件的目录上的可执行位有很大关系)。
我应该把FTP用户和apache服务器放在一个组中吗?
可能不会。我建议将网络服务器/PHP 视为“其他” - 因此对于网络服务器可以访问的任何内容(包括 PHP),权限应该是:
- 用户:读、写
- 组:取决于您的政策
- 其他读
IE0644(与上面的可执行权限不相关),对于目录:
- 用户:读、写、执行
- 组:取决于您的政策
- 其他:读取、执行
IE0755