我在 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
,所以/var/www/html
任何用户都可以在/var/www/html
使用 PHP 时修改任何文件。
有没有办法通过.htaccess
或任何其他方式将PHP锁定在每个站点的文件夹中,以便只允许修改其站点文件夹内的文件夹?IE 如果我在里面运行一个 PHP 脚本sample.com
,该脚本应该不能读取或写入上面的文件夹sample.com
。
你可以
bindfs
改用。将所有代码放在 下/var/www/html/<project>
,chown www-data:www-data -R /var/www/html
并使用bindfs
将其挂载到用户目录中。例子:Chroot 用户会将代码视为自己的所有者。但真正的权限将是 apache 目录下的 www-data。