去fork / exec权限被拒绝错误

时间:2013-02-18 19:32:44

标签: go

我最近使用CentOS 6.3安装了Go到我们的服务器上。安装似乎没有问题。但是我做了一个测试“hello world”脚本,当我运行时,我得到以下输出。

fork/exec /tmp/go-build967564990/command-line-arguments/_obj/a.out: permission denied

现在运行go env或其他go命令似乎有效。起初我认为这是一个权限问题,但是以root用户身份运行我得到同样的东西。一个

5 个答案:

答案 0 :(得分:12)

猜测:你的nix可能因为安全原因而在/ tmp中执行程序时禁用。它可能在CentOS中可配置,但我不知道。

替代解决方案:您似乎正在尝试go run执行Go程序(这是脚本,C是脚本)。尝试(假设$GOPATH=~,简单的可能性)而不是正常的构建,即代替

me:~/src/foo$ go run main.go

me:~/src/foo$ go build # main.go should not be necessary here
me:~/src/foo$ ./foo

这种方法仍然会使用/ tmp-whatever创建二进制文件IIRC,但它不会尝试从那里执行它。

PS:不要以root身份运行这些命令。正确的设置无需这样做。

答案 1 :(得分:10)

我今天遇到了这个问题,但上面的解决方案没有用。通过简单运行来解决我的问题:

$ export TMPDIR=~/tmp/

然后我能够让脚本运行:

$ go run hello.go
hello, world

唯一的缺点是每次要运行应用程序时都必须运行export TMPDIR

感谢Adam Goforth

答案 2 :(得分:0)

fix this issue on my Chromebook我刚刚将~/tmp重新安装为可执行文件。这样做可能会对安全性产生影响,但由于go run适用于其他平台,我认为它可能并不坏(特别是在本地开发机器上):

sudo mount -i -o remount,exec /tmp/

我将此添加到我的.bash_profile脚本中。

答案 3 :(得分:0)

我正在使用Fedora 31,并且遇到了类似的错误,这使我到了这里。没有fork/execpermission denied错误,我无法运行Jetbrains IntelliJ Ultimate / GoLand使用的Go调试器。解决方案是这样的:

setsebool deny_ptrace 0

有关详细信息,请参见https://fedoraproject.org/wiki/Features/SELinuxDenyPtrace

答案 4 :(得分:-5)

考虑尝试:

sudo mount -o remount exec /tmp