网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

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的问题分析与解决方案是怎样的
网页网址:http://bjjierui.cn/article/ihidjp.html

其他资讯