Go run permission denied的问题分析与解决方案是怎样的
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,Go run permission denied的问题分析与解决方案是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获
千家信息网最后更新 2025年02月01日Go run permission denied的问题分析与解决方案是怎样的
Go run permission denied的问题分析与解决方案是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
0x01 问题
一次同事反馈在环境中,执行go run xx.go时出现如下异常提示。
fork/exec /tmp/go-build104992250/b001/exe/h: permission denied
有点兴趣,所以就动手查了下。查的过程比较简单,希望会有所帮助。
0x02 分析
出现这个问题,原因是go在/tmp目录下生成的可执行文件没有执行权限,当Go去执行时就会报错。 为什么会没有执行权限呢? 请教了同事之后,确认了开发环境中的/tmp的挂载选项中如下所示。
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=524288k)
其中有一个选项为noexec。mount的man page中如下描述,这个选项是可以禁止掉二进制的可执行权限,这会提高系统的安全性。实测这个选项对Shell、Python这种脚本语言的可执行脚本也有效果。
noexec Do not permit direct execution of any binaries on the mounted filesystem.
0x03 解决
既然这个选项是安全要求的,自然不能去修改。转换下思路,能不能让Go换个地方。直觉告诉我,应该有个环境变量控制这个行为。很遗憾在国内并没有搜到。
既然是环境变量,那就去源码目录里搜索下。 通过GOROOT环境变量,确认了Go中的环境变量具有如下特征。 env GOROOT=$WORK/parent/goroot
有一个env的前缀。 grep 'env ' -rIn . | grep -i tmp
执行后,找到了GOTMPDIR这个环境变量。 在环境里试了下,GOTMPDIR=/root go run xxx.go之后,运行成功。问题解决了。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
环境
变量
问题
权限
帮助
分析
安全
同事
目录
脚本
方案
解决方案
清楚
成功
遗憾
二进制
兴趣
内容
前缀
原因
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
开放网络技术高峰研讨会
调查挣钱软件开发
1核1g服务器架设传奇
jeppesen数据库
上海软件开发人员待遇
杭州软件开发温湿度
数据库端口被占用无法安装
湘西软件开发专业职校
快速删除数据库库存
大连华信软件开发管培生面试
数据库报错 io 等待
全境封锁服务器在哪
武汉大学网络安全学院李淑华
青岛戴尔服务器授权代理
大连松下电器软件开发违约金
中心服务器设计
技工院校软件开发
怎么制作MC服务器插件
利用计算机技术网络技术
服务器本地安全策略默认
微数据库丢失
2.17网络安全知识竞赛
长沙子非鱼网络技术有限
信用数据库怎么保证信息安全
关于网络安全的方向
西宁网络技术参考价格
网络技术资源共享什么意思
电脑有网但是软件连接不上服务器
护苗网络安全序列课程
网络技术前沿与探索 教材