О "sudo go run main.go"

Я использую Go в своей Ubuntu 16.04, и я установил GOPATH, GOROOT и запустить простой код успешно.

Теперь я хочу захватить сетевой пакет с помощью "gopacket", но для этого требуется разрешение sudo /root. Я извиняюсь за команду: sudo go run main.goЭхо ошибка:

"exec: go: исполняемый файл не найден в $PATH"

Я погуглил это, и я редактирую файл /etc/sudoders и изменить строку "Defaults env_reset" в "Defaults !env_reset", но это не работает...

Вы можете мне помочь?

2 ответа

Переменные среды не установлены для вашего пользователя root. Не пытайся бежать sudo go run ...вместо этого создайте бинарный файл без sudo, например go build или же go installи затем выполнить двоичный файл с sudo,

Допустим, вы в папке main.goПредполагается, что это называется mycapt:

go build
sudo ./mycapt

Или же:

go install
sudo $GOPATH/bin/mycapt

sudo -E go run main.go может работать на вас.

Вот то, что вы можете получить о -E вариант из man sudo

-E, --preserve-env Indicates to the security policy that the user wishes to pre‐ serve their existing environment variables. The security policy may return an error if the user does not have permis‐ sion to preserve the environment.

Другие вопросы по тегам