将 Apache VirtualHosts 限制在其自己的目录中

将 Apache VirtualHosts 限制在其自己的目录中

我在 Ubuntu 16.04 和 18.04 上运行 Apache,并已将其配置为接受来自多个域的连接。所有站点都存储在/var/www/html以下位置:

example.com
sub.example.com
sample.com
...

其中一些网站正在开发中,我已为在这些网站上工作的人员创建了用户帐户。对于此类网站,我将mount --bind网站文件夹的 复制到用户的主文件夹中,用户将 chroot 到该文件夹​​中。因此,如果用户john正在处理,他们将看到与登录时sample.com相同的文件夹。/sample.com

显然,这样做的目的是将用户限制在他们负责的项目中。但是,由于 PHP 是在www-data拥有 的下运行的,因此任何用户都可以使用 PHP/var/www/html修改任何文件。/var/www/html

是否有任何方法(通过.htaccess或其他方式)锁定每个站点文件夹中的 PHP,以便只允许修改其站点文件夹内的文件夹?即,如果我在 内运行 PHP 脚本sample.com,则该脚本不应该能够读取或写入 上面的文件夹sample.com

答案1

你也可以使用bindfs。将所有代码放在 下/var/www/html/<project>chown www-data:www-data -R /var/www/html然后使用bindfs将其挂载到用户目录中。示例:

bindfs -g www-data -m chroot_user1 --create-for-user=www-data --create-for-group=www-data --create-with-perms=0644,a+X /var/www/html/example.com/ /home/chroot_user1/wwwroot_example.com/

Chroot 用户将以所有者的身份查看代码。但真正的权限是 apache 目录下的 www-data。

相关内容