【发布时间】:2016-03-12 19:17:28
【问题描述】:
我想测试/自动化一些存储库,基本流程是这样的:
repos := []string{"repo 1", "repo 2", ...}
for r := range repos {
// git clone the repo
// cd repo dir
// make test
// make build
// ...
}
我正在使用GO 执行此操作,使用os.exec 调用所有系列命令,例如:
exec.Command("sh", "-c", "git clone project")
到目前为止一切都很好,但我想知道是否有一种方法可以保护/防止 Makefile 上的错误写入可能会执行类似rm -rf / 的操作。并打破我的主机。
基本上我想使用系统库/工具,但限制/chroot 仅将输出限制为特定的workdir,这样我就可以避免为此预先构建 chroot。
一个可行的解决方案是使用FreeBSD jail,但我想知道是否有另一种/安全的方式来做到这一点,而不需要容器、虚拟盒等;并使用基本的 Mac OS X 工作站。以便任何人都可以“安全地”运行和测试而无需担心。
有什么想法吗?
【问题讨论】:
-
您需要什么样的沙盒?您只需要对文件系统或网络套接字等其他东西进行沙箱处理?
-
有一个叫做 syscall 的包,它有一个 Chroot 函数可以满足你的需要:golang.org/pkg/syscall
-
我只需要文件系统的沙盒
-
@robbrit 我认为我没有正确使用 syscall/chroot 是否有机会分享一个示例?
-
不幸的是,我从未使用过它,我只是在 Google 上搜索了一些可能会满足您的需求的东西。你必须自己测试一下。