我在我的Ubuntu16.04中使用Go,并设置GOPATH
、GOROOT
并成功运行简单代码。
现在我想通过"gopacket“捕获网络数据包,但它需要sudo /root权限。我执行命令:sudo go run main.go
,它回波错误:
"exec: go:$PATH中找不到的可执行文件“
我搜索了它,然后编辑文件/etc/sudoders
并将行"Defaults env_reset"
更改为"Defaults !env_reset"
,但是它不起作用.
你能帮帮我吗?
发布于 2016-11-02 08:03:32
您的环境变量没有为根用户设置。不要尝试运行sudo go run ...
,而是在没有sudo的情况下构建二进制文件,例如go build
或go install
,然后使用sudo
执行二进制文件。
假设你在main.go
的文件夹中,假设它叫做mycapt
go build
sudo ./mycapt
或者:
go install
sudo $GOPATH/bin/mycapt
发布于 2016-11-05 12:37:31
sudo -E go run main.go
可能会为你工作。
以下是从-E
选项中可以从man sudo
获得的信息
-E, --preserve-env
Indicates to the security policy that the user wishes to preserve
their existing environment variables. The security policy may return
an error if the user does not have permission to preserve the environment.
https://stackoverflow.com/questions/40374434
复制相似问题