我正在从全新安装的 CentOS 5 设置服务器。对于为多个用户运行单个 Apache 实例,最佳权限结构(用户、组、unix 权限)是什么?理想情况下,它应该满足以下要求:
- 每个用户的网站都存储在其主目录的子目录中。用户可以编辑文件和权限。
- Apache 可以读取所有用户的网站。
- 任何用户都无法读取其他用户的网站文件。
附加问题:如何将 PHP 和/或 Perl 和/或 Ruby 添加到 Apache,而不允许任何用户访问任何其他用户的文件?
答案1
这就是我所做的:
- chown 用户名:www-data 网站目录
- chmod g+s website_dir # 这会使该目录中的新文件/目录归 www-data 用户(标准 Debian 网络服务器用户)所有
- 然后,任何用户创建的、组可读的文件都可以被网络服务器访问,如果用户希望目录/文件也可以被网络服务器写入(例如 configs/upload 等),则可以执行 chmod g+w
缺点是用户 www-data 运行所有脚本,因此用户可以使用在 Web 服务器上运行的 php/ruby/perl/whatever 获取其他用户数据。
下一步将使用类似 mod_suphp 或 mod_suexec 的程序来以该用户的权限运行用户脚本。