Gorunpermissiondenied的问题分析与解决方案是怎样的

Go run permission denied的问题分析与解决方案是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

成都网络公司-成都网站建设公司成都创新互联10多年经验成就非凡,专业从事成都做网站、网站制作,成都网页设计,成都网页制作,软文推广广告投放平台等。10多年来已成功提供全面的成都网站建设方案,打造行业特色的成都网站建设案例,建站热线:028-86922220,我们期待您的来电!

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之后,运行成功。问题解决了。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。

分享题目:Gorunpermissiondenied的问题分析与解决方案是怎样的
网页网址:https://www.cdcxhl.com/article28/ihidjp.html

成都网站建设公司_创新互联,为您提供响应式网站网页设计公司用户体验网站营销外贸网站建设域名注册

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计