使用 Apache 进行共享主机的 Unix / Linux 权限设置

使用 Apache 进行共享主机的 Unix / Linux 权限设置

我正在从全新安装的 CentOS 5 设置服务器。对于为多个用户运行单个 Apache 实例,最佳权限结构(用户、组、unix 权限)是什么?理想情况下,它应该满足以下要求:

  • 每个用户的网站都存储在其主目录的子目录中。用户可以编辑文件和权限。
  • Apache 可以读取所有用户的网站。
  • 任何用户都无法读取其他用户的网站文件。

附加问题:如何将 PHP 和/或 Perl 和/或 Ruby 添加到 Apache,而不允许任何用户访问任何其他用户的文件?

答案1

这就是我所做的:

  1. chown 用户名:www-data 网站目录
  2. chmod g+s website_dir # 这会使该目录中的新文件/目录归 www-data 用户(标准 Debian 网络服务器用户)所有
  3. 然后,任何用户创建的、组可读的文件都可以被网络服务器访问,如果用户希望目录/文件也可以被网络服务器写入(例如 configs/upload 等),则可以执行 chmod g+w

缺点是用户 www-data 运行所有脚本,因此用户可以使用在 Web 服务器上运行的 php/ruby/perl/whatever 获取其他用户数据。

下一步将使用类似 mod_suphp 或 mod_suexec 的程序来以该用户的权限运行用户脚本。

相关内容