Boxjan

填 越填越深的坑 啊

  • 首页
  • 归档
  • 分类
  • 友链
  • 关于

带有标签为:go, linux 的文章

共找到结果 4 条
2019-11-02
0 comment

用 seccomp 去限制 Go 语言中的 ForkExec 所产生的子进程

本文所有内容均在 linux 环境下(Ubuntu 18.04)。 Go 提倡使用 Gorotuine 来替代系统所提供的 线程、进程,所以在语言中并没有提供直接 fork 或类似的方法。 只有提供了 ForkExec 及类似(包装后)的方法。 为了限制 syscall 的调用,go 语言只能使用 ptrace 进行捕捉后判断,这样使得效率会低下,(可以使用 time strace 做些测试)。那必然就要使用 seccomp,关于 seccomp 的一些东西可以看 开发OJ之沙箱 — syscall 限制; […]

继续阅读 >>
2019-08-02
0 comment

开发OJ之沙箱 — 改用 golang

Why go? 原因很简单,因为 go 好用。 OJ 的 web 端是用的Laravel,而其他部分打算用的是 Go ,虽然 go 能便捷的与 C/C++ 集成在一起,但是并不似很方便,如果涉及到指针也很容易出错,所以就考虑将沙箱也一起用 go 修改,如果以后心血来潮,做 windows 的支持,相比 C/C++ 语言也会方便的多。 改进了什么 Go 语言 为不同的系统提供了不同的API,在 Linux 下 亦有提供 getrusage,setrlimit 这类的API。 新的也考虑引入 cgroup这个资 […]

继续阅读 >>
2019-03-06
0 comment

开发OJ之沙箱 — 安装,使用

这段时间大部分在看Go语言的一些东西,为写 判题 和 判题队列管理 做着准备。这几天将 C++ 写的沙箱以动态链接库的形式与Go语言进行整合,这里记录一些遇到的问题。 大改 review 了代码之后发现 沙箱核心代码中并没有用到 std::string 的东西,为了性能就砍掉了一部分,将原有使用string的改为使用const char * , 但是在main函数中仍然在使用(为了偷懒。 接着是 Go语言只支持直接使用 C 的代码,这并不是说C++不行,编译成动态链接库之后, 提供一个C语言类型的接口即可, […]

继续阅读 >>
2019-01-25
0 comment

开发OJ之沙箱 — syscall 限制

计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,为了更好的管理这些资源进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用(System Call)【简写syscall】。Linux 提供的系统调用种类十分丰富,不乏一些危险的调用,例如vm86,这是我觉得最危险的系统调用之一,当然也有一些十分普遍的调用,比如read,write。 沙箱需要保护系统的安全,所以需要沙箱能控 […]

继续阅读 >>
© 2018 - JanBox的小站 - 粤 ICP 备 18102102 号
14 queries, run in 0.059 in seconds.
Powered by  Boxjan & wordpress