如何将 PHP 代码限制到特定文件夹?
How can I limit PHP code to a specific folder?
我正在为我的学生设置一个网络服务器来试用他们的 php 代码。
在网络服务器上,我将为每个学生创建一个文件夹,我不希望学生上传到他们的文件夹的代码到学生文件夹之外的 change/read/execute 个文件。
有没有办法在不为每个学生设置 VPS 的情况下解决这个问题?
that 是您要查找的内容吗?如果是,这是一个 php.ini
设置。为了将其放入每个虚拟主机部分的 Web 服务器配置中,我们需要知道:
- 您使用什么网络服务器
- 如何为每个学生配置虚拟主机
如果每个学生都有单独的配置和虚拟主机,请考虑添加
php_admin_value open_basedir "/path/to/this/student/folder"
到 virthost 配置
Marc B 建议使用 chroot jail - 但与 VPS 一样,这实际上需要 运行 每个学生至少有单独的 FPM 池。
一个更简单的解决方案是使用 open_basedir 功能将脚本限制在它们自己的目录树中。您可以在每个目录的网络服务器配置中启用它 - 但我认为没有一种简单的方法来映射由 mod_userdir 计算的路径,即您需要很多
<Directory "/home/Gurgy/public_html">
php_admin_value open_basedir "/home/Gurgy/"
</Directory>
<Directory "/home/MarcB/public_html">
php_admin_value open_basedir "/home/MarcB/"
</Directory>
...
(这可能值得在 Serverfault 上进一步提问,看看是否有人知道解决这个更具体问题的更好方法)。
有一些漏洞允许您访问 open_basedir 限制之外的文件。符号链接错误已修复,但不确定 IMAP 漏洞。最好将 PHP 的最新补丁版本与 Suhosin 一起使用,并做一些进一步的研究。
话虽如此 - 除非它是一个非常短期的课程,否则您可能希望为他们提供一个 VM 映像,然后他们可以使用该映像来探索服务提供的其他方面。
我正在为我的学生设置一个网络服务器来试用他们的 php 代码。 在网络服务器上,我将为每个学生创建一个文件夹,我不希望学生上传到他们的文件夹的代码到学生文件夹之外的 change/read/execute 个文件。
有没有办法在不为每个学生设置 VPS 的情况下解决这个问题?
that 是您要查找的内容吗?如果是,这是一个 php.ini
设置。为了将其放入每个虚拟主机部分的 Web 服务器配置中,我们需要知道:
- 您使用什么网络服务器
- 如何为每个学生配置虚拟主机
如果每个学生都有单独的配置和虚拟主机,请考虑添加
php_admin_value open_basedir "/path/to/this/student/folder"
到 virthost 配置
Marc B 建议使用 chroot jail - 但与 VPS 一样,这实际上需要 运行 每个学生至少有单独的 FPM 池。
一个更简单的解决方案是使用 open_basedir 功能将脚本限制在它们自己的目录树中。您可以在每个目录的网络服务器配置中启用它 - 但我认为没有一种简单的方法来映射由 mod_userdir 计算的路径,即您需要很多
<Directory "/home/Gurgy/public_html">
php_admin_value open_basedir "/home/Gurgy/"
</Directory>
<Directory "/home/MarcB/public_html">
php_admin_value open_basedir "/home/MarcB/"
</Directory>
...
(这可能值得在 Serverfault 上进一步提问,看看是否有人知道解决这个更具体问题的更好方法)。
有一些漏洞允许您访问 open_basedir 限制之外的文件。符号链接错误已修复,但不确定 IMAP 漏洞。最好将 PHP 的最新补丁版本与 Suhosin 一起使用,并做一些进一步的研究。
话虽如此 - 除非它是一个非常短期的课程,否则您可能希望为他们提供一个 VM 映像,然后他们可以使用该映像来探索服务提供的其他方面。