首页 > 后端开发 > Golang > 正文

Go 编译执行时出现 "permission denied" 错误的解决方案

碧海醫心
发布: 2025-09-30 17:10:23
原创
954人浏览过

go 编译执行时出现

在 CentOS 6.3 等 Linux 系统上使用 Go 语言进行开发时,可能会遇到 "fork/exec: permission denied" 错误。 这个问题通常发生在尝试运行编译后的 Go 程序或直接使用 go run 命令时。 错误信息表明程序在尝试执行位于临时目录中的可执行文件时,被操作系统拒绝,提示权限不足。

产生该问题的原因通常是 Go 默认使用的临时目录(例如 /tmp)被配置为 noexec 挂载选项,这意味着该目录下的任何文件都不能被执行,即使拥有执行权限也不行。这是一种常见的安全措施,旨在防止恶意代码在临时目录中执行。

解决这个问题的方法是更改 Go 编译器使用的临时目录,将其指向一个用户拥有执行权限的目录。可以通过设置 TMPDIR 环境变量来实现。

以下是一种解决方案:

export TMPDIR=~/tmp/
登录后复制

这条命令将 TMPDIR 环境变量设置为用户主目录下的 tmp 目录。如果 ~/tmp 目录不存在,需要先创建它:

mkdir ~/tmp
登录后复制

设置 TMPDIR 环境变量后,再次运行 Go 程序,应该就不会再出现 "permission denied" 错误了。

例如,如果你的 Go 程序名为 hello.go,你可以这样运行它:

go run hello.go
登录后复制

如果一切顺利,你将会看到程序的输出。

千面视频动捕
千面视频动捕

千面视频动捕是一个AI视频动捕解决方案,专注于将视频中的人体关节二维信息转化为三维模型动作。

千面视频动捕 173
查看详情 千面视频动捕

注意事项:

  • 上述 export TMPDIR 命令只会影响当前 shell 会话。如果希望永久生效,需要将该命令添加到 shell 的配置文件中,例如 ~/.bashrc 或 ~/.zshrc。

    echo "export TMPDIR=~/tmp/" >> ~/.bashrc
    source ~/.bashrc
    登录后复制

    或者

    echo "export TMPDIR=~/tmp/" >> ~/.zshrc
    source ~/.zshrc
    登录后复制
  • 确保 ~/tmp 目录具有正确的权限。通常情况下,用户应该拥有该目录的读、写和执行权限。

    chmod 755 ~/tmp
    登录后复制
  • 如果你的系统管理员对 /tmp 目录进行了特殊的安全配置,那么即使使用 root 用户也可能无法执行该目录下的文件。在这种情况下,更改 TMPDIR 环境变量是解决问题的唯一方法。

总结:

通过设置 TMPDIR 环境变量,可以有效地解决 Go 编译执行时出现的 "permission denied" 错误。 这种方法简单易行,并且不需要修改系统级别的配置。 记住,为了使设置永久生效,需要将 export TMPDIR 命令添加到 shell 的配置文件中。 同时,确保指定的临时目录具有正确的权限。

以上就是Go 编译执行时出现 "permission denied" 错误的解决方案的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号