- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想测试/自动化一些存储库,基本流程是这样的:
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 ,但我想知道是否有一种替代/安全的方法可以在不需要容器、virtualbox 等的情况下执行此操作;并使用基本的 Mac OS X 工作站。这样任何人都可以“安全”地运行和测试而无需担心。
有什么想法吗?
最佳答案
你应该可以使用 os.Setuid/os.Setgid (example.go):
package main
import (
"log"
"flag"
"os"
"os/exec"
"syscall"
)
func main() {
var oUid = flag.Int("uid", 0, "Run with User ID")
var oGid = flag.Int("gid", 0, "Run with Group ID")
flag.Parse()
// Get UID/GUID from args
var uid = *oUid
var gid = *oGid
// Run whoami
out, err := exec.Command("whoami").Output()
if err != nil {
log.Fatal(err)
return
}
// Output whoami
log.Println("Original UID/GID whoami:", string(out))
log.Println("Setting UID/GUID")
// Change privileges
err = syscall.Setgid(gid)
if err != nil {
log.Println("Cannot setgid")
log.Fatal(err)
return
}
err = syscall.Setuid(uid)
if err != nil {
log.Println("Cannot setuid")
log.Fatal(err)
return
}
// Execute whoami again
out, err = exec.Command("whoami").Output()
if err != nil {
log.Fatal(err)
return
}
log.Println("Changed UID/GID whoami:", string(out))
// Do some dangerous stuff
log.Println("Creating a executable file within /bin should fail...")
_, err = os.Create("/bin/should-fail")
if err == nil {
log.Println("Warning: operation did not fail")
return
}
log.Println("We are fine", err)
}
我还建议阅读有关正确设置 gid/uid 的内容(https://unix.stackexchange.com/questions/166817/using-the-setuid-bit-properly,在 C 语言中)。哦!它需要在 uid 之前设置 gid,因为如果不这样做,示例将失败。
您应该以 root 权限执行 example.go
,并分别使用标志 -gid、-uid 为命令指定非特权 gid/uid。
sudo go run example.go -uid <unprivileged id> -gid <unprivileged id>
关于macos - 有没有办法对 go os.exec 调用进行 chroot/sandbox(防止 rm -rf/),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35962179/
Paypal 最近更改了他们在 developers.paypal 中的用户界面,因此,我找不到可以登录旧 SANDBOX 帐户的位置。 在新的 developer.paypal.com 中,在 Ap
我正在尝试使用 loadPhotoForSize: withCompletionHandler: 为游戏中心的 friend 获取头像但它一直在抛出GKErrorDomain Code=3 "The
我在 paypal developer 中创建了多个沙箱帐户。我已在所有这些帐户上启用 business pro,以便接收直接付款。但是,对于在美国以外的国家/地区创建的商业专业账户,发送直接付款的
我能够使用 node 用户并使用 --cap-add=SYS_ADMIN 设置沙箱使其正常工作,但 AWS ECS Fargate 不支持添加 SYS_ADMIN 作为 linux 参数。因此,我试图
我正在尝试使用 scotty 创建一个简单网站的教程,但是当我尝试命令“cabal sandbox init”时出现错误: cabal: unrecognised command: sandbox (
我想制作一个非常基本的 Excel 插件。但是,在 Excel Online 中加载 xml 文件后出现错误: 有人知道如何修复这些错误吗? 这是 xml 文件: 2145a915-4e7b-
我使用 Ambari 运行了 pig 服务检查,但它失败了并出现以下异常。 2016-04-09 20:35:19,399 [JobControl] INFO org.apache.hadoop.m
我正在尝试将一个Firebase函数部署到使用Pupeteer的FireBase项目中,我让它在我的本地计算机上运行,但当它尝试在FireBase上运行时,我收到以下错误:。我在网上看到其他人说要使用
我已阅读 Wikipedia article ,但我不太确定它的含义,以及它与版本控制有多么相似。 如果有人能用非常简单的术语解释什么是沙箱,那将会很有帮助。 最佳答案 A sandpit or sa
重新访问一个一个月左右没打开的项目,发现之前设置的沙箱账户无法访问,访问; http://admin.wechat.com/debug/cgi-bin/sandbox?t=sandbox/login
Apple 在 WWDC 17 上推出了 ARKit,他们还在 Xcode 9 中添加了一个名为“增强现实应用程序”的新项目模板,它基本上应该是 WWDC 主题演讲或类似事件期间的演示应用程序。 但是
我正在尝试使用 How can I create a secure Lua sandbox?构建我自己的泄漏沙箱。 我正在尝试创建一个 Lua 沙箱,其中一些 Lua 函数可以访问沙箱外的其他一些 L
Hy 这里是一个例子 Example 为什么当我使用 沙箱我看不到播放器..我想使用沙箱来阻止弹出窗口,但看起来如果我使用它我看不到播放器 有没有allow-objects ? 我在那个页面上也有一
我对新的 PayPal 开发人员网站和 Sandbox 感到悲痛。我在 Developer 中创建了一个个人帐户,但我添加的资金没有显示出来。我读过一篇论坛帖子,说您必须通过 Sandbox 登录来添
在沙盒模式下查询 Instagram API 以获取与 token 相关的用户喜欢的媒体,我没有得到任何数据。当然,用户被授权在沙盒中使用该应用程序。 获取:https://api.instagram
我正在开发记录用户音频的应用程序,并在表格 View 的另一个屏幕上显示从此应用程序制作的所有早期录音。单击特定行时,必须播放录音。我如何实现这一目标,是否有任何资源可以帮助我实现同样的目标? 我的代
我有运行 Express Checkout 的沙箱。当我在我的沙盒中使用卖家账户进行测试付款时,一切正常,付款成功,买家账户从中扣除购买金额。但是卖家账户从来没有得到任何钱。 我在某处读到,要激活卖家
谁知道我在哪里可以启用 “商家未启用账单地址请求” 在沙箱环境中? 谢谢达尔科 最佳答案 请打开ticket向 MTS 技术团队提供帮助。 关于paypal-sandbox - 商家未启用账单地址请求
您好,我是 Paypal 集成的新手。 我已在我的在线商店中成功设置了 Express Checkout。 但在我的 Sandbox 帐户中,无论实际值(value)多少,每笔交易的余额总是减少 20
在 Paypal Sandbox 中,当我尝试向买家账户添加信用卡时,我不断收到错误消息“该卡号已分配给另一个 PayPal 账户。”我不明白,因为当我创建测试帐户时,Paypal 刚刚为我生成了号码
我是一名优秀的程序员,十分优秀!