我正在为我的学生设置一个网络服务器来试用他们的PHP代码。 在网络服务器上,我将为每个学生提供一个文件夹,我不想要学生上传到他们文件夹的代码来更改/读取/执行学生文件夹之外的文件。
在没有为每个学生设置VPS的情况下,有没有解决这个问题?
答案 0 :(得分:2)
Marc B提出了一个chroot监狱 - 但是像VPS一样,这实际上需要为每个学生运行至少单独的FPM池。
更简单的解决方案是使用open_basedir功能将脚本约束到自己的目录树。您可以在每个目录的基础上在webserver配置中启用它 - 但我认为没有一种简单的方法来映射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,并做进一步的研究。
话虽如此 - 除非它是一个非常短的课程,你可能想要为他们提供一个虚拟机映像,然后他们可以用它来探索服务提供的其他方面。
答案 1 :(得分:0)
that您要找的是什么?如果是,则为php.ini
设置。为了将它放入每个虚拟主机部分的Web服务器配置中,我们需要知道:
如果每个学生都有单独的配置和虚拟主机,请考虑添加
php_admin_value open_basedir "/path/to/this/student/folder"
到virthost配置