【问题标题】:About "sudo go run main.go"关于“sudo go run main.go”
【发布时间】:2016-11-02 07:24:57
【问题描述】:

我在我的 Ubuntu 16.04 中使用 Go,我设置了 GOPATHGOROOT 并成功运行简单代码。

现在我想通过“gopacket”捕获网络数据包,但它需要 sudo /root 权限。我执行命令:sudo go run main.go,它回显错误:

"exec: go: $PATH 中找不到可执行文件"

我用谷歌搜索它并编辑文件 /etc/sudoders 并将行 "Defaults env_reset" 更改为 "Defaults !env_reset",但它不起作用...

你能帮帮我吗?

【问题讨论】:

  • 您的问题与 go lang 无关

标签: go path sudo


【解决方案1】:

您的环境变量没有为您的 root 用户设置。不要尝试运行sudo go run ...,而是在没有 sudo 的情况下构建二进制文件,例如go buildgo install,然后使用sudo 执行二进制文件。

假设您在main.go 的文件夹中,假设它被称为mycapt

go build
sudo ./mycapt

或者:

go install
sudo $GOPATH/bin/mycapt

【讨论】:

    【解决方案2】:

    sudo -E go run main.go 可能适合你。

    您可以从man sudo 获得有关-E 选项的信息

    -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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      相关资源
      最近更新 更多