Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以使溢出。
2个月前关闭。
on-topic
我最近开始使用OpenBSD。而且我想创建简单的即弃型容器/ VM或其他东西(应将其用作沙箱)。
用户可以上载他的源代码(C ++ / Java / Perl),它将在服务器(OpenBSD)上进行编译,如果成功,则应执行此File,然后将结果返回到Web页面。
如何在OpenBSD中提供此功能?
另外,由于“ jail”将在6.0中删除,因此我应该使用chroot吗?还是在OpenBSD中创建“沙盒”还有其他可能性吗?
启动守护程序或其中的软件
基本支持chroot功能的许多软件,
现在,从OpenBSD 5.9开始,您可以在基础中使用
您还可以使用基于端口中软件的另一种方法,
现在,关于您的主要问题(提供一种远程编译源代码的方式),我想更好的主意是将您的代码与主系统真正隔离,并且使用
想改善这个问题吗?更新问题,以使溢出。
2个月前关闭。
on-topic
我最近开始使用OpenBSD。而且我想创建简单的即弃型容器/ VM或其他东西(应将其用作沙箱)。
用户可以上载他的源代码(C ++ / Java / Perl),它将在服务器(OpenBSD)上进行编译,如果成功,则应执行此File,然后将结果返回到Web页面。
如何在OpenBSD中提供此功能?
另外,由于“ jail”将在6.0中删除,因此我应该使用chroot吗?还是在OpenBSD中创建“沙盒”还有其他可能性吗?
最佳答案
当前,OpenBSD不支持任何“类固醇上的chroot”机制。过去,相同的监狱功能(名为sysjail
)曾存在于端口中,但由于不易维护且非常不安全,于2007年被删除。您可以在stackexchange上以及在搜索引擎中找到有关它的更多信息。
从历史上看,OpenBSD仅支持chroot(8)
,并且与其他系统完全相同:
创建一个带有userland的替代根
# create your target chroot
target="/tmp/chroot"
mkdir ${target}
# now build and install your userland
cd /usr
cvs -qz3 -d${repository} co src -r${openbsd_release}
cd /usr/src
make obj && make && make install DESTDIR=${target}
启动守护程序或其中的软件
# in root
chroot /tmp/chroot
# run your daemon here
# note: you need to init also dev directory
# and, eventually, customize /etc/fstab
# /tmp is currently not allowed to have dev on it
# please see fstab(5) man page
基本支持chroot功能的许多软件,
openntpd
,openssh
,httpd
和许多其他软件都默认在隔离目录中进行配置。现在,从OpenBSD 5.9开始,您可以在基础中使用
vmm(4)
管理程序和vmctl(8)
。您可以启动vmd
守护程序并创建隔离的容器,就像其他任何虚拟机管理程序一样(hypervisor)(bhyve,xen或kvm)。# from openbsd vmctl man page example
vmctl create disk.img -s 4.5G
vmctl start "myvm" -m 512M -i 1 -d disk.img -k /bsd
vmctl stop 1
您还可以使用基于端口中软件的另一种方法,
qemu
可以很好地工作,但由于缺乏内核加速支持而在OpenBSD上的性能很差,部分原因是由于文件系统的结构。现在,关于您的主要问题(提供一种远程编译源代码的方式),我想更好的主意是将您的代码与主系统真正隔离,并且使用
vmctl
或qemu
之类的方法可能是一个很好的答案。也许qemu会更好,因为您可以使用标准用户来执行它,而没有内核功能和很多网络功能,但是编译的确很慢。07-24 09:50